`

mybatis-plus 自动代码生成

阅读更多
package com.anyec;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException;
import com.baomidou.mybatisplus.core.toolkit.StringPool;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.InjectionConfig;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.FileOutConfig;
import com.baomidou.mybatisplus.generator.config.GlobalConfig;
import com.baomidou.mybatisplus.generator.config.PackageConfig;
import com.baomidou.mybatisplus.generator.config.StrategyConfig;
import com.baomidou.mybatisplus.generator.config.TemplateConfig;
import com.baomidou.mybatisplus.generator.config.po.TableInfo;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;

public class CodeGenerator {

    /**
     * <p>
     * 读取控制台内容
     * </p>
     */
    public static String scanner(String tip) {
        Scanner scanner = new Scanner(System.in);
        StringBuilder help = new StringBuilder();
        help.append("请输入" + tip + ":");
        System.out.println(help.toString());
        if (scanner.hasNext()) {
            String ipt = scanner.next();
            if (StringUtils.isNotEmpty(ipt)) {
                return ipt;
            }
        }
        throw new MybatisPlusException("请输入正确的" + tip + "!");
    }

    public static void main(String[] args) {
        // 代码生成器
        AutoGenerator mpg = new AutoGenerator();

        // 全局配置
        GlobalConfig gc = new GlobalConfig();
        String projectPath = System.getProperty("user.dir");
        System.out.println("projectPath:"+projectPath);
        gc.setOutputDir(projectPath + "/src/main/java");
        gc.setAuthor("anyec");
//        gc.setMapperName("Dao");
        gc.setOpen(false);
        gc.setBaseColumnList(true);
        gc.setBaseResultMap(true);
        gc.setEnableCache(true);
        gc.setFileOverride(true);
        gc.setIdType(IdType.AUTO);
        // gc.setSwagger2(true); 实体属性 Swagger2 注解
        mpg.setGlobalConfig(gc);

        // 数据源配置
        DataSourceConfig dsc = new DataSourceConfig();
//        dsc.setUrl("jdbc:mysql://localhost:33306/idb?userSSL=false&useUnicode=true&characterEncoding=utf8&serverTimezone=GMT");
       dsc.setUrl("jdbc:mysql://localhost:3306/doujiv2?characterEncoding=utf8&useSSL=true&verifyServerCertificate=false");
        // dsc.setSchemaName("public");
        dsc.setDriverName("com.mysql.jdbc.Driver");
        dsc.setUsername("root");
        dsc.setPassword("mysql");
        mpg.setDataSource(dsc);

        // 包配置
        PackageConfig pc = new PackageConfig();
        pc.setModuleName(scanner("模块名"));
        pc.setParent("com.anyec");
        mpg.setPackageInfo(pc);

        // 自定义配置
        InjectionConfig cfg = new InjectionConfig() {
            @Override
            public void initMap() {
                // to do nothing
            }
        };

        // 如果模板引擎是 freemarker
        String templatePath = "/templates/mapper.xml.ftl";
        // 如果模板引擎是 velocity
        // String templatePath = "/templates/mapper.xml.vm";

        // 自定义输出配置
        List<FileOutConfig> focList = new ArrayList<>();
        // 自定义配置会被优先输出
        focList.add(new FileOutConfig(templatePath) {
            @Override
            public String outputFile(TableInfo tableInfo) {
                // 自定义输出文件名 , 如果你 Entity 设置了前后缀、此处注意 xml 的名称会跟着发生变化!!
                return projectPath + "/src/main/resources/mapper/" + pc.getModuleName()
                        + "/" + tableInfo.getEntityName() + "Mapper" + StringPool.DOT_XML;
            }
        });
        /*
        cfg.setFileCreate(new IFileCreate() {
            @Override
            public boolean isCreate(ConfigBuilder configBuilder, FileType fileType, String filePath) {
                // 判断自定义文件夹是否需要创建
                checkDir("调用默认方法创建的目录");
                return false;
            }
        });
        */
        cfg.setFileOutConfigList(focList);
        mpg.setCfg(cfg);

        // 配置模板
        TemplateConfig templateConfig = new TemplateConfig();

        // 配置自定义输出模板
        //指定自定义模板路径,注意不要带上.ftl/.vm, 会根据使用的模板引擎自动识别
        // templateConfig.setEntity("templates/entity2.java");
        // templateConfig.setService();
        // templateConfig.setController();

        templateConfig.setXml(null);
        mpg.setTemplate(templateConfig);

        // 策略配置
        StrategyConfig strategy = new StrategyConfig();
        strategy.setNaming(NamingStrategy.underline_to_camel);
        strategy.setColumnNaming(NamingStrategy.underline_to_camel);
//        strategy.setNaming(NamingStrategy.removePrefixAndCamel(name, tablePrefix))
//        NamingStrategy.removePrefixAndCamel("t_user",new String[]{"t_"});
        strategy.setTablePrefix("t_");
//        strategy.setNameConvert(new NameConvert());
//        strategy.setSuperEntityClass("com.anyec.common.BaseEntity");
        strategy.setEntityLombokModel(false);
        strategy.setRestControllerStyle(true);
//        strategy.setSuperControllerClass("com.anyec.common.BaseuserController");
        strategy.setInclude(scanner("表名,多个英文逗号分割").split(","));
//        strategy.setSuperEntityColumns("lId");
       
        strategy.setLogicDeleteFieldName("nDeleted");
        strategy.setControllerMappingHyphenStyle(false);
//        strategy.setTablePrefix(pc.getModuleName() + "_");
        mpg.setStrategy(strategy);
        mpg.setTemplateEngine(new FreemarkerTemplateEngine());
        mpg.execute();
    }

}

 

# Tomcat
server:
    tomcat:
        max-threads: 10
        min-spare-threads: 10
    port: 8091

# mysql
spring:
    datasource:
        type: com.alibaba.druid.pool.DruidDataSource
        driver-class-name: com.mysql.jdbc.Driver
        url: jdbc:mysql://localhost:3306/doujiv2?characterEncoding=utf8
        username: root
        password: mysql
    jackson:
        time-zone: GMT%2B8
        date-format: yyyy-MM-dd HH:mm:ss
    resources:
            static-locations: classpath:/static/,classpath:/views/

# Mybatis配置
mybatis:
    mapperLocations: classpath:mapper/**/*.xml
mybatis-plus: 
    configuration: 
        log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
        map-underscore-to-camel-case: false  
        db-config: 
            id-type: AUTO
            capital-mode: false  
            table_prefix: t_
            table_underline: true  
            column-underline: false  
            logic-delete-value: 1  
            logic-not-delete-value: 0
            

 

package com.anyec;

import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;

@Configuration
@ConditionalOnClass(value = { PaginationInterceptor.class })
public class MybatisPlusConfig {
	@Bean
	public PaginationInterceptor paginationInterceptor() {
		PaginationInterceptor paginationInterceptor = new PaginationInterceptor();
		return paginationInterceptor;
	}
}

 

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.1.3.RELEASE</version>
		<relativePath /> <!-- lookup parent from repository -->
	</parent>
	<groupId>com.anyec</groupId>
	<artifactId>codegen</artifactId>
	<version>1.0.0</version>
	<name>codegen</name>
	<description>codegen</description>

	<properties>
		<java.version>1.8</java.version>
	</properties>

	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		<dependency>
			<groupId>com.baomidou</groupId>
			<artifactId>mybatis-plus-boot-starter</artifactId>
			<version>3.1.1</version>
		</dependency>
		<!-- <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> 
			<version>8.0.15</version> <scope>runtime</scope> </dependency> -->
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>5.1.48</version>
		</dependency>
		<dependency>
			<groupId>org.projectlombok</groupId>
			<artifactId>lombok</artifactId>
			<version>1.18.6</version>
			<optional>true</optional>
		</dependency>
		<dependency>
			<groupId>com.baomidou</groupId>
			<artifactId>mybatis-plus-generator</artifactId>
			<version>3.1.1</version>
		</dependency>
		<dependency>
			<groupId>org.apache.velocity</groupId>
			<artifactId>velocity-engine-core</artifactId>
			<version>2.1</version>
		</dependency>
		<dependency>
			<groupId>org.freemarker</groupId>
			<artifactId>freemarker</artifactId>
			<version>2.3.28</version>
		</dependency>
		<dependency>
			<groupId>com.ibeetl</groupId>
			<artifactId>beetl</artifactId>
			<version>3.0.0.M3</version>
		</dependency>
		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>druid-spring-boot-starter</artifactId>
			<version>1.1.22</version>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>

</project>

 

分享到:
评论

相关推荐

    Mybatis-plus自动生成代码

    在项目开发中,Mybatis-plus的一个重要特性就是其代码生成器,能够极大地提高开发效率,减少手动编写基础代码的工作量。本篇文章将详细探讨Mybatis-plus的代码生成器及其在实际应用中的作用。 首先,我们要理解...

    mybatis-plus自动生成代码(包含swaager注解)

    MyBatis-Plus 是 MyBatis 的一个扩展,它提供了许多增强功能,简化了开发过程,包括自动代码生成器。这个工具能够极大地提高开发效率,尤其是处理数据访问层的重复工作。在本项目中,"mybatis-plus自动生成代码(包含...

    mybatis-plus 达梦 代码生成

    3. **代码生成工具**: 自动代码生成能够极大地提高开发效率,通过分析数据库表结构,可以快速生成Entity类、Mapper接口、Mapper XML文件等,减少了手动编写这些基础代码的时间。 4. **Maven依赖管理**: Maven是Java...

    mybatis-plus代码生成器模版代码

    本资源包含的是Mybatis-Plus的代码生成器模板代码,用于自动生成符合项目规范的Java实体类、Mapper接口及XML配置文件,提高开发效率。 代码生成器是开发中的利器,它能够根据数据库表结构快速生成对应的Java代码,...

    mybatis-plus自定义模板.zip

    在默认情况下,Mybatis-Plus提供了丰富的代码生成器,可以帮助开发者快速生成实体类、Mapper接口、Mapper XML文件以及Service接口和实现类。然而,有时候我们可能需要根据项目需求进行一些定制化,比如修改生成模板...

    mybatis-plus代码自动生成工具

    这可能是一个独立的Mybatis-Plus代码生成工具的jar包,用户可以通过命令行或集成到其他系统中运行,实现代码自动生成。 总结起来,Mybatis-Plus代码自动生成工具是Java开发中的一大利器,它通过自动化生成常见的...

    MyBatis-Plus入门+MyBatis-Plus文档手册 中文pdf高清版.rar

    特性:无侵入、损耗小、强大的CRUD操作,支持lambda 形势调用、支持多种数据库,支持主键自动生成、支持ActiveRecord模式,支持自定义全局通用操作、支持关键词自动转义,内置代码生成器、内置分页插件、内置性能...

    oracle 结合 mybatis-plus 逆向工程生成代码,以便大家使用

    Oracle 和 MyBatis-Plus 的结合使用是一种常见的数据库操作方式,尤其在开发过程中,通过逆向工程生成代码能显著提高开发效率。MyBatis-Plus 是 MyBatis 的一个扩展,它提供了许多便利的功能,包括自动 CRUD(创建、...

    mybatis-plus 实践及架构原理

    Mybatis-Plus是一个Mybatis的增强工具,在保留Mybatis原有特性的同时,提供了很多便捷的功能,如代码生成器、分页插件等,极大地提高了开发的效率,特别是在处理单表操作时。 2. Mybatis-Plus的核心功能: - 自动...

    springboot+swagger3+mybatis-plus3.5.1代码生成+druid+log4j2【最完美】的一次配置

    MyBatis-Plus是MyBatis的扩展,它提供了一些方便的CRUD操作和查询功能,减少了代码量。MyBatis-Plus 3.5.1版本包含了许多优化,比如更丰富的API,性能提升,以及对JPA规范的支持。在SpringBoot中配置MyBatis-Plus,...

    mybatis-plus代码生成器配置文档

    本文档详细介绍了MyBatis-Plus代码生成器的配置方法,包括数据源配置、数据库表配置、包名配置、模板配置、全局策略配置和注入配置等。 首先,我们需要了解MyBatis-Plus代码生成器的几个核心配置类: 1. ...

    非常好用的mybatis-plus代码生成器

    Mybatis-Plus是一款基于Mybatis框架的扩展工具,它在Mybatis的基础上简化了开发工作,提供了许多便捷的功能,包括自动代码生成器。这个"非常好用的mybatis-plus代码生成器"能够帮助开发者快速生成常见的CRUD操作代码...

    mybatis-plus源码(mybatis-plus-3.5.1.zip)

    此源码包`mybatis-plus-3.5.1.zip`包含了MyBatis-Plus 3.5.1版本的全部源代码,有助于我们深入理解其内部实现机制和工作原理。 MyBatis-Plus的主要功能包括: 1. **CRUD操作**:MyBatis-Plus提供了简化版的CRUD...

    mybatis-plus-generator.zip

    接着,通过运行自定义的Maven插件或者编写Java代码来调用Mybatis-Plus的代码生成器,根据配置生成对应的Mapper、Service和Controller类。最后,这些生成的类将被编译并放入`target`目录,可以被Spring Boot加载并...

    mybatis-plus自动生成代码的自定义引擎文件

    使用方式:...引用mybatis-plus,如果需要根据实体类生成自定义controller、service、mapper、entity文件,需要设置自定义引擎文件,有多种格式,上传的资源是vm资源

    mybatis-plus快速入门项目-mybatis-plus基本操作大全-附带sql+项目文档

    它包含了MyBatis的所有特性,并且在上面进行了扩展,如自动CRUD操作、主键自动生成、条件构造器等,极大地提高了开发效率。 2. **配置MyBatis-Plus** 首先,你需要在Spring Boot的配置文件(application.yml或...

    SpringBoot集成Mybatis-Plus+代码生成工具.doc

    SpringBoot 集成 Mybatis-Plus 代码生成工具 SpringBoot 是一个基于 Java 的框架,它提供了快速构建生产级别的应用程序的能力。Mybatis-Plus 是一个基于 Mybatis 框架的增强工具,它提供了代码生成、分页、查询等...

    SpringBoot整合MyBatis-Plus

    这样,我们就完成了SpringBoot与MyBatis-Plus的整合,以及利用代码生成器自动化生成基础代码的过程。 总结一下,SpringBoot整合MyBatis-Plus的关键步骤包括:引入依赖、配置MyBatis-Plus、创建实体类与Mapper接口、...

    SpringBoot集成MyBatis-Plus实现国产数据库适配.docx

    * 内置代码生成器:采用代码或者 Maven 插件可快速生成 Mapper 、Model 、Service 、Controller 层代码,支持模板引擎,更有超多自定义配置等您来使用 * 内置分页插件:基于 MyBatis 物理分页,开发者无需关心具体...

    mybatis-plus案例

    Mybatis-Plus提供了一个代码生成器,可以根据数据库表结构自动生成对应的实体类。通过配置生成器的参数,指定数据源、目标包路径等,执行后即可得到与数据库表字段一一对应的实体类,这些类包含了字段注解,方便...

Global site tag (gtag.js) - Google Analytics