之前一直都是使用mybatis-plus的代码生成工具,可以一键生成controller、service、entity、mapper 真的很是方便。最近手闲升级了一下mybatis-plus的版本,升级后吓我一跳,之前写的生成代码的部分,居然过时了很多api。到处都是删除线,强迫症的我差点吐一口老血而亡。
image.png
看着实在难受,去mybatis-plus的官网查了一下,官网的文档也没更新最新的代码,还是使用老的api。哎~ 只能自己动手来改造了!
image.png
查了一下源码,看到了有删除api的类,几乎都是重构,使用了建造者模式!那我也使用建造者模式也重构一下我的代码呗!
修改后的代码如下:
public static void main(String[] args) {
// 数据源配置
DataSourceConfig mDataSourceConfig = new DataSourceConfig
.Builder(dataSourceUrl, dataSourceUserName, dataSourcePwd)
.driver(dataSourceDriveName).build();
// 全局配置
String projectPath = System.getProperty("user.dir");
GlobalConfig mGlobalConfig = new GlobalConfig.Builder()
.author("wone").openDir(false)
.outputDir(projectPath + "/src/main/java").build();
String moduleName = scanner("模块名");
//包配置
PackageConfig mPackageConfig = new PackageConfig.Builder()
.moduleName(moduleName).parent("com.nantian.bootproject").build();
// 自定义配置
InjectionConfig cfg = new InjectionConfig() {
@Override
public void initMap() {
// to do nothing
}
};
List<FileOutConfig> focList = new ArrayList<>();
focList.add(new FileOutConfig("/templates/mapper.xml.ftl") {
@Override
public File outputFile(TableInfo tableInfo) {
// 自定义输入文件名称
return new File(projectPath + "/src/main/resources/mapper/" + moduleName
+ "/" + tableInfo.getEntityName() + "Mapper" + StringPool.DOT_XML);
}
});
cfg.addFileOutConfig(focList);
// 配置模板
TemplateConfig mTemplateConfig = new TemplateConfig.Builder()
.controller("templates/controller.java")
.entity("templates/entity.java")
.service("templates/service.java", "templates/serviceImpl.java")
.mapper("templates/mapper.java").build();
// 策略配置
//strategy.setSuperEntityClass("com.baomidou.mybatisplus.samples.generator.common.BaseEntity");
//strategy.setSuperControllerClass("com.baomidou.mybatisplus.samples.generator.common.BaseController");
StrategyConfig mStrategyConfig = new StrategyConfig.Builder()
.addInclude(scanner("表名")).addTablePrefix(moduleName + "_")
.entityBuilder().naming(NamingStrategy.underline_to_camel)
.columnNaming((NamingStrategy.underline_to_camel))
.lombok(true).addSuperEntityColumns("id")
.controllerBuilder().hyphenStyle(true)
.build();
// 代码生成器
new AutoGenerator(mDataSourceConfig)
.global(mGlobalConfig).packageInfo(mPackageConfig)
.injection(cfg).template(mTemplateConfig)
.engine(new FreemarkerTemplateEngine())
.strategy(mStrategyConfig).execute();
}
修改后的代码看着清爽多了!我的代码世界顿时又美好了~
网友评论