当前位置: 首页>后端>正文

MyBatis-Plus代码生成器(新)

mybatis-plus-generator 3.5.1 及其以上版本,代码生成器发生了变化,这里做一下简单的记录。

1. 使用的版本pom

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.5.3.2</version>
</dependency>
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-generator</artifactId>
    <version>3.5.3.2</version>
</dependency>
<dependency>
    <groupId>org.apache.velocity</groupId>
    <artifactId>velocity-engine-core</artifactId>
    <version>2.2</version>
</dependency>
<!-- lombok是新建springboot项目的时候勾选带上的 -->
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <optional>true</optional>
</dependency>

2. 用到的模板文件

模板文件一般放到@/resource/templates/目录下面。
官方给的例子中的模板地址:模板文件
我是都下载扔下来了,到时候选择用哪个:

MyBatis-Plus代码生成器(新),第1张
模板文件

3. MpGeneratorNew.java

配置都是参考官网给的。我只是把常用的放在一块了,记录一下。
官网配置地址

import java.sql.Types;
import java.util.Collections;

import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.OutputFile;
import com.baomidou.mybatisplus.generator.config.rules.DbColumnType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;

public class MpGeneratorNew {
    
    public static String dbUrl = "jdbc:mysql://192.168.1.1:3306/test?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=GMT%2B8&allowMultiQueries=true&autoReconnect=true";
    public static String javaDir = "/src/main/java";
    public static String resourcesDir = "/src/main/resources";
    public static String parentPackage = "com.test.mybatisplus";
    public static String include = "test1,test2";
    
    public static void main(String[] args) {
        //当前项目目录
        String projectPath = System.getProperty("user.dir"); 
        FastAutoGenerator.create(dbUrl, "root", "123456")
        // 1. 全局配置
        .globalConfig(builder -> {
            // 设置作者
            builder.author("zrb") 
                // 开启 swagger 模式
                .enableSwagger() 
                // 指定输出目录
                .outputDir(projectPath + javaDir); 
        })
        // 2. 数据库字段转换配置
        .dataSourceConfig(builder -> builder.typeConvertHandler((globalConfig, typeRegistry, metaInfo) -> {
            int typeCode = metaInfo.getJdbcType().TYPE_CODE;
            if (typeCode == Types.SMALLINT) {
                // 自定义类型转换
                return DbColumnType.INTEGER;
            }
            if (typeCode == Types.TIMESTAMP) {
                // 时间戳转换成date
                return DbColumnType.DATE;
            }
            if (typeCode == Types.TINYINT) {
                // tinyint转换成Integer
                return DbColumnType.INTEGER;
            }
            return typeRegistry.getColumnType(metaInfo);
        }))
        // 3. 包配置
        .packageConfig(builder -> {
            // 设置父包名
            builder.parent(parentPackage) 
                // 设置父包模块名
//              .moduleName("test") 
                // Controller 包名
                .controller("controller")
                .entity("entity")
                .mapper("dao")
                .service("service")
                .serviceImpl("service.impl")
//              .xml("mapper");
                // 单独设置某个包的生成路径,xml文件我习惯放resource中
                .pathInfo(Collections.singletonMap(OutputFile.xml, projectPath + resourcesDir + "/mapper/")); 
        })
        // 4. 策略配置
        .strategyConfig(builder -> {
            builder.enableCapitalMode().enableSkipView()
                   // 设置需要生成的表
                   .addInclude(include.split(",")) 
                   // 设置过滤表前缀
                   .addTablePrefix("t_")
                   // 实体类
                   .entityBuilder()
                   .enableFileOverride()
                   // 表名驼峰
                   .naming(NamingStrategy.underline_to_camel)
                   // 字段名驼峰
                   .columnNaming(NamingStrategy.underline_to_camel)
                   .enableLombok()
                   .enableActiveRecord()
                   // controller类
                   .controllerBuilder()
                   .enableFileOverride()
                   .enableRestStyle()
                   // service
                   .serviceBuilder()
                   .enableFileOverride()
                   // mapper
                   .mapperBuilder()
                   .enableFileOverride()
                   .enableBaseResultMap()
                   .enableBaseColumnList()
                   // 我习惯叫dao
                   .formatMapperFileName("%sDao")
                   .formatXmlFileName("%sXml")
                   ; 
        })
        // 5. 配置模板,使用Freemarker引擎模板,默认的是Velocity引擎模板
        .templateConfig(builder -> {
            builder
                   // 不使用模板也就不生成文件了
                   .disable(TemplateType.CONTROLLER)
//                 .controller("/templates/controller.java.vm")
                   .service("/templates/service.java.vm")
                   .serviceImpl("/templates/serviceImpl.java.vm")
                   .entity("/templates/entity.java.vm")
                   .mapper("/templates/mapper.java.vm")
                   .xml("/templates/mapper.xml.vm")
                   ;
            
        })
        // 6. 注入自定义配置,没用到
        .injectionConfig(builder -> {
//          builder.customFile(null);
        })
        
        .execute();
    }

}


https://www.xamrdz.com/backend/3yp1942655.html

相关文章: