之前一直都是使用mybatis-plus的代碼生成工具曼月,可以一鍵生成controller、service柔昼、entity哑芹、mapper 真的很是方便。最近手閑升級(jí)了一下mybatis-plus的版本捕透,升級(jí)后嚇我一跳聪姿,之前寫(xiě)的生成代碼的部分碴萧,居然過(guò)時(shí)了很多api。到處都是刪除線咳燕,強(qiáng)迫癥的我差點(diǎn)吐一口老血而亡勿决。
image.png
看著實(shí)在難受,去mybatis-plus的官網(wǎng)查了一下招盲,官網(wǎng)的文檔也沒(méi)更新最新的代碼,還是使用老的api嘉冒。哎~ 只能自己動(dòng)手來(lái)改造了曹货!
image.png
查了一下源碼,看到了有刪除api的類讳推,幾乎都是重構(gòu)顶籽,使用了建造者模式!那我也使用建造者模式也重構(gòu)一下我的代碼唄银觅!
修改后的代碼如下:
public static void main(String[] args) {
// 數(shù)據(jù)源配置
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();
}
修改后的代碼看著清爽多了礼饱!我的代碼世界頓時(shí)又美好了~