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/
目录下面。
官方给的例子中的模板地址:模板文件
我是都下载扔下来了,到时候选择用哪个:
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();
}
}