新版Mybatiusplus代码生成器

官网代码生成器(新) | MyBatis-Plus

目录

1.前置依赖

2.配置对应参数

2.1带注释版本

2.2对AutoGenerator的解释

2.3精简版


1.前置依赖

        <!--       代码生成器的依赖 -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-generator</artifactId>
            <version>3.5.1</version>
        </dependency>
        <!--        代码生成器模板引擎依赖,必须加上-->
        <dependency>
            <groupId>org.apache.velocity</groupId>
            <artifactId>velocity-engine-core</artifactId>
            <version>2.3</version>
        </dependency>
        <!--mybatisplus的依赖-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.5.2</version>
        </dependency>

配置maven插件

因为生成测myabtis.xml的配置文件会在java文件下,这时候扫描到就需要配置插件

 <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
        <resources>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.yml</include>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
                <filtering>false</filtering>
            </resource>
            <resource>
                <directory>src/main/resources</directory>
                <includes> <include>**/*.yml</include>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
                <filtering>false</filtering>
            </resource>
        </resources>
    </build>

2.配置对应参数

具体参数可以查看官网,这为使用使用我尝试过的

2.1带注释版本

   //数据库配置 使用官网默认
        DataSourceConfig dataSourceConfig = new DataSourceConfig.Builder("jdbc:mysql://127.0.0.1:13306/mybatis?test_user&useSSL=true&useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC", "root", "123456")
                .dbQuery(new MySqlQuery())//数据库查询
                .typeConvert(new MySqlTypeConvert())//数据库类型转换器
                .keyWordsHandler(new MySqlKeyWordsHandler())//数据库关键字处理
                .build();
        //全局配置,
        GlobalConfig globalConfig = new GlobalConfig.Builder()
                .fileOverride()//覆盖已生成的文件,默认false
                .disableOpenDir()//禁止加载完之后打开
                .outputDir("D:\\code\\MuddlePro\\src\\main\\java")//输出指定目录默认
                .author("qing")//作者
                //.enableKotlin()//是否开启kotlin模式 默认false
                .enableSwagger()//开启swaggerm模式。默认false
                .dateType(DateType.TIME_PACK) //时间策略DateType.ONLY_DATE 默认值: DateType.TIME_PACK
                .commentDate("yyyy-MM-dd")//注释的日期
                .build();
        //包配置
        PackageConfig packageConfig = new PackageConfig.Builder()
                .parent("com.llkj")//父包名
                .moduleName("mybatisplus")//模块名
                .entity("entity")//实体类名称
                .service("service")//service包
//                .serviceImpl("service.impl.tt")//排至impl接口实现存放位置
                .mapper("mapper")
//                .xml("mapper.xml")
//                .controller("controller.hh")//同serviceImpl
//                .other("other")//其他包
                .build();
        //策略模式
        StrategyConfig strategyConfig = new StrategyConfig.Builder()
//                .enableCapitalMode()//开启大写命名
                .enableSkipView()//开启跳过视图
//                .disableSqlFilter()//禁用sql过滤
//                .likeTable(new LikeTable("USER"))
//                .addInclude("t_simple")//增加表的匹配
                .addTablePrefix("t_")//去除表的前缀如果t_user则变成User而不包含TUser
//                .addFieldPrefix("o")//增加字段过滤的前缀
//                .addFieldSuffix("_flag")//增加字段过滤前缀

                //实体类策略<------entity层--------->
                .entityBuilder()
                .enableLombok()//开启lombok
//              去下划线,NamingStrategy.no_change不发生变化,NamingStrategy.underline_to_camel开启驼峰命名
                .naming(NamingStrategy.underline_to_camel)
                .logicDeleteColumnName("isDelete")//逻辑删除字段数据库字段
                .enableTableFieldAnnotation()//开启开启实体生成时字段注解
                .idType(IdType.AUTO)//设置主键类型


//                <-----controller层----->
                .controllerBuilder()
                .formatFileName("%sController")//controller层的拼接比如实体类时User拼接成UserController
                .enableRestStyle()//开启rest风格,主要为加了@RestController
                .enableHyphenStyle()//开启驼峰命名

//                <------service层------------>
                .serviceBuilder()
                .formatServiceFileName("%sService")//同理Controller拼接文件名字

//                <-----mapper层控制-------->
                .mapperBuilder()
                .enableMapperAnnotation()//开启开启 @Mapper 注解,也可用MapperSacan代替
                .build();

        new AutoGenerator(dataSourceConfig)
                .global(globalConfig)
                .packageInfo(packageConfig)
                .strategy(strategyConfig)
                .execute();

2.2对AutoGenerator的解释

官网提供的方法是

 所以在FastAutoGenerator类中查看execute方法可以查看到对应的这段代码,所以我们只需要重新调用该类的execute方法就可以执行自己配置的对应参数

ps:这里没有使用自定义的模板

    public void execute() {
        (new AutoGenerator(this.dataSourceConfigBuilder.build()))
    .global(this.globalConfigBuilder.build())
    .packageInfo(this.packageConfigBuilder.build())
    .strategy(this.strategyConfigBuilder.build())
    .injection(this.injectionConfigBuilder.build())
    .template(this.templateConfigBuilder.build())
    .execute(this.templateEngine);
    }

2.3精简版

     //数据库配置 使用官网默认
        DataSourceConfig dataSourceConfig = new DataSourceConfig.Builder("jdbc:mysql://127.0.0.1:13306/mybatis?test_user&useSSL=true&useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC", "root", "123456")
                .dbQuery(new MySqlQuery())//数据库查询
                .typeConvert(new MySqlTypeConvert())//数据库类型转换器
                .keyWordsHandler(new MySqlKeyWordsHandler())//数据库关键字处理
                .build();
        //全局配置,
        GlobalConfig globalConfig = new GlobalConfig.Builder()
                .fileOverride()//覆盖已生成的文件,默认false
                .disableOpenDir()//禁止加载完之后打开
                .outputDir("D:\\code\\MuddlePro\\src\\main\\java")//输出指定目录默认
                .author("qing")//作者
                .enableSwagger()//开启swaggerm模式。默认false
                .dateType(DateType.TIME_PACK) //时间策略DateType.ONLY_DATE 默认值: DateType.TIME_PACK
                .commentDate("yyyy-MM-dd")//注释的日期
                .build();
        //包配置
        PackageConfig packageConfig = new PackageConfig.Builder()
                .parent("com.llkj")
                .moduleName("mybatisplus")
                .entity("entity")
                .service("service")
                .mapper("mapper")
                .build();
        //策略模式
        StrategyConfig strategyConfig = new StrategyConfig.Builder()
                .enableSkipView()//开启跳过视图
                .addTablePrefix("t_")//去除表的前缀如果t_user则变成User而不包含TUser
                //实体类策略<------entity层--------->
                .entityBuilder()
                .enableLombok()//开启lombok @Getter 和@Setter方法
                .naming(NamingStrategy.underline_to_camel)//开启驼峰命名
                .logicDeleteColumnName("isDelete")//设置逻辑删除字段注解 @TableLogic
                .enableTableFieldAnnotation()//开启实体生成字段注解注解 @TableFailed
                .idType(IdType.AUTO)//设置主键类型 @TableId

//                <-----controller层----->
                .controllerBuilder()
                .formatFileName("%sController")//controller层的拼接比如实体类时User拼接成UserController
                .enableRestStyle()//开启rest风格,主要为加了@RestController
                .enableHyphenStyle()//开启驼峰命名

//                <------service层------------>
                .serviceBuilder()
                .formatServiceFileName("%sService")//同理Controller拼接文件名字

//                <-----mapper层控制-------->
                .mapperBuilder()
                .enableMapperAnnotation()//开启开启 @Mapper 注解,也可用MapperSacan代替
                .build();

        new AutoGenerator(dataSourceConfig)
                .global(globalConfig)
                .packageInfo(packageConfig)
                .strategy(strategyConfig)
                .execute();