MyBatis-Plus代码生成组件mybatis-plus-generator升级到3.5.3后,fileOverride()方法过期,虽然还可以使用,但是控制台会有一个警告,而且提示在下个版本原本的方法就会删除。在此之前,使用代码生成使用的网上找到的代码生成的代码一直在用,稀里糊涂,正好借此机会好好的研究了一下mybatis-plus-generator的使用。
本文就不再写从零开始代码生成,因为这些官网的文档都写了,只是新版本的改动官方文档还没有提。
FastAutoGenerator
FastAutoGenerator是代码生成主要的类,看源码就可以看到,主要使用的配置就是下面的几个。只需要分别配置这几个Builder,就可以配置代码生成了。
private FastAutoGenerator(DataSourceConfig.Builder dataSourceConfigBuilder) {
//数据源配置 Builder
this.dataSourceConfigBuilder = dataSourceConfigBuilder;
//全局配置 Builder
this.globalConfigBuilder = new GlobalConfig.Builder();
//包配置 Builder
this.packageConfigBuilder = new PackageConfig.Builder();
//策略配置 Builder
this.strategyConfigBuilder = new StrategyConfig.Builder();
//注入配置 Builder
this.injectionConfigBuilder = new InjectionConfig.Builder();
//模板配置 Builder
this.templateConfigBuilder = new TemplateConfig.Builder();
}
这次版本升级估计应该是将几个配置移到了策略配置下,比如fileOverride这个配置。
代码生成
在FastAutoGenerator的几个config方法中传入对应的Build即可,可以分别看一下这几个Build的源码就可以知道有些那是可以配置的。
可以看到的是策略配置strategyConfig中有通用的和分别针对实体类的、Mapper、Service和Controller的。
下面贴出我挑出来的一些配置
/**
* MySQL数据表代码生成
*/
@Test
public void mysqlGen(){
//数据库连接
String url = "jdbc:mysql://192.168.196.144:3306/bootdemo?useSSL=false&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true&serverTimezone=GMT%2B8&nullCatalogMeansCurrent=true&allowPublicKeyRetrieval=true";
//数据用户名
String username = "root";
//数据库密码
String password = "root";
FastAutoGenerator.create(url,username,password)
.globalConfig(builder -> {
builder.author("xgblack") // 设置作者
//.enableSwagger() // 开启 swagger 模式
//.fileOverride() // 覆盖已生成文件,3.5.4版本后方法废弃
.disableOpenDir()
.outputDir("E:\\Files\\Tmp\\gen\\"); // 指定输出目录(代码文件输出目录)
})
.packageConfig(builder -> {
builder.parent("com.demo") // 设置父包名
.moduleName("app") // 设置父包模块名
.pathInfo(Collections.singletonMap(OutputFile.xml, "E:\\Files\\Tmp\\gen\\mapper\\")); // 设置mapperXml生成路径
})
.strategyConfig(builder -> {
//基础配置
builder
//.addTablePrefix() // 设置过滤表前缀
.addInclude("engine_job"); // 设置需要生成的表名
})
.strategyConfig(builder -> {
//实体类相关配置
builder.entityBuilder()
.enableTableFieldAnnotation() // 开启实体类字段注解
.enableLombok() // 开启lombok
.enableChainModel() // 开启链式模式
.enableFileOverride(); // 覆盖已生成文件
})
.strategyConfig(builder -> {
//mapper相关配置
builder.mapperBuilder()
.enableBaseResultMap() // 开启BaseResultMap
.enableBaseColumnList() // 开启BaseColumnList
.enableFileOverride(); // 开启覆盖已生成文件
})
.strategyConfig(builder -> {
//service相关配置
builder.serviceBuilder()
.enableFileOverride(); // 开启覆盖已生成文件
})
.strategyConfig(builder -> {
//controller相关配置
builder.controllerBuilder()
//.enableRestStyle() //开启生成@RestController控制器
//.enableHyphenStyle() // 开启驼峰转连字符
.enableFileOverride(); // 覆盖已生成文件
})
.templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
.execute();
}
/**
* PG 数据表代码生成
*/
@Test
public void pgGen(){
//数据库连接
String url = "jdbc:postgresql://127.0.0.1:5432/bootdemopg";
//数据用户名
String username = "postgres";
//数据库密码
String password = "postgres";
//模式名
String schemaName = "animal";
FastAutoGenerator.create(new DataSourceConfig.Builder(url, username, password).schema(schemaName))
.globalConfig(builder -> {
builder.author("xgblack") // 设置作者
//.enableSwagger() // 开启 swagger 模式
//.fileOverride() // 覆盖已生成文件,3.5.4版本后方法废弃
.disableOpenDir()
.outputDir("E:\\Codes\\project_xg\\bootdemo\\src\\main\\java\\"); // 指定输出目录(代码文件输出目录)
})
.packageConfig(builder -> {
builder.parent("com.demo") // 设置父包名
.moduleName("app") // 设置父包模块名
.pathInfo(Collections.singletonMap(OutputFile.xml, "E:\\Codes\\project_xg\\bootdemo\\src\\main\\resources\\mapper\\")); // 设置mapperXml生成路径
})
.strategyConfig(builder -> {
//基础配置
builder
//.addTablePrefix() // 设置过滤表前缀
.addInclude("engine_job"); // 设置需要生成的表名
})
.strategyConfig(builder -> {
//实体类相关配置
builder.entityBuilder()
.enableTableFieldAnnotation() // 开启实体类字段注解
.enableLombok() // 开启lombok
.enableChainModel() // 开启链式模式
.enableFileOverride(); // 覆盖已生成文件
})
.strategyConfig(builder -> {
//mapper相关配置
builder.mapperBuilder()
.enableBaseResultMap() // 开启BaseResultMap
.enableBaseColumnList() // 开启BaseColumnList
.enableFileOverride(); // 开启覆盖已生成文件
})
.strategyConfig(builder -> {
//service相关配置
builder.serviceBuilder()
.enableFileOverride(); // 开启覆盖已生成文件
})
.strategyConfig(builder -> {
//controller相关配置
builder.controllerBuilder()
//.enableRestStyle() //开启生成@RestController控制器
//.enableHyphenStyle() // 开启驼峰转连字符
.enableFileOverride(); // 覆盖已生成文件
})
.templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
.execute();
}
牛,写的真不错
来逛逛,点赞就完事了