上篇文章配置了基本的mybatis plus自動生成的代碼膀钠,輸出的文件地址是程序默認指定的仿野,那么如果我們想讓生成某類文件到指定文件夾下該如何進行配置呢?
模板說明:.vm為velocity引擎的鳄哭,.ftl為freemarker引擎的
代碼配置:
/*
* 1. 如果.xml文件是生成到Mapper類下面的xml文件夾下柒莉,這個配置不需要,如果配置了則不生成.xml文件了
* 2. 如果.xml文件不是默認生成到Mapper類下面的xml文件夾下尘吗,而是指定到某個路徑下逝她,
* 則該配置需要配置tc.setXml(null),如果不配置則Mapper類下面的xml文件夾下還會同時生成一份默認的睬捶。
*/
TemplateConfig tc = new TemplateConfig();
tc.setXml(null);// 這個標注了則則不再默認路徑下生成XML文件了
// tc.setMapper(null);// 這個標注則不再默認路徑下生成%sMapper.java文件了
generator.setTemplate(tc);
// 注入配置黔宛, 該配置不在代碼中配置出來的話,則生該自動生成的文件不會生成對應的文件G苊场M位巍!介劫!
InjectionConfig cfg = new InjectionConfig() {
@Override
public void initMap() {
// to do nothing
}
};
// 自定義輸出配置
List<FileOutConfig> focList = new ArrayList<>();
// 獲取目錄地址
String projectPath = System.getProperty("user.dir");
// 自定義配置會被優(yōu)先輸出
focList.add(new FileOutConfig("/templates/mapper.xml.ftl") {
@Override
public String outputFile(TableInfo tableInfo) {
// 自定義輸出文件名 + pc.getModuleName()
if(StringUtils.isEmpty(pc.getModuleName())){
return projectPath + "/src/main/resources/mapper/" + tableInfo.getXmlName() + StringPool.DOT_XML;
} else {
return projectPath + "/src/main/resources/mapper/" + pc.getModuleName() + "/" + tableInfo.getXmlName() + StringPool.DOT_XML;
}
}
});
/*
* 目前這里只配置了xml文件的生成地址徽惋,如果需要指定其他文件的生成地址可以繼續(xù)配置多個Java模板,到指定路徑下
*/
// focList.add(new FileOutConfig("/templates/mapper.java.ftl") {
// @Override
// public String outputFile(TableInfo tableInfo) {
// // 自定義輸出文件名 + pc.getModuleName()
// if(StringUtils.isEmpty(pc.getModuleName())){
// return projectPath + "/src/main/java/xx/flower/mapper/" + tableInfo.getMapperName() + StringPool.DOT_JAVA;
// } else {
// return projectPath + "/src/main/java/xx/flower/mapper/" + pc.getModuleName() + "/" + tableInfo.getMapperName() + StringPool.DOT_JAVA;
// }
// }
// });
cfg.setFileOutConfigList(focList);
generator.setCfg(cfg);
代碼說明:
如果需要將生成的文件指定到某個文件下生成則可以按照如上代碼編寫座韵,其中:
- 下列配置和上篇文章配置一樣险绘,或者根據(jù)自己的需要添加刪減部分屬性配置。
- GlobalConfig(全局配置)
- DataSourceConfig(數(shù)據(jù)庫)
- PackageConfig(包配置)
- StrategyConfig(策略配置)
- PackageConfig(包配置)即使配置了默認生成路徑,但是也不會在默認路徑下生成指定類型的文件宦棺。
- TemplateConfig(模板配置)一定要進行配置瓣距,且指定生成的文件一定要設置生null,eg:tc.setXml(null)渺氧,則不在默認路徑下生成默認的.xml文件旨涝。
- FileOutConfig創(chuàng)建對象的時候模板路徑(templatePath)一定要指定蹬屹,否則所以需要生成的文件都不會生成侣背。
- generator.setTemplateEngine(new FreemarkerTemplateEngine());模板引擎使用的是
- FreemarkerTemplateEngine則需要編寫對應的.ftl的模板;依賴:
<dependency> <groupId>org.freemarker</groupId> <artifactId>freemarker</artifactId> <version>2.3.28</version> </dependency>
- VelocityTemplateEngine則需要編寫對應的.vm的模板慨默,依賴:
<dependency> <groupId>org.apache.velocity</groupId> <artifactId>velocity-engine-core</artifactId> <version>2.2</version> </dependency>
生成示例:
指定%sMapper.java和%sMapper.xml文件.png
引用文檔:
上篇文檔
mybatis-plus自定義代碼模板
使用mybatis-plus逆向工程生成controller贩耐、service、mapper及XML文件厦取,讓代碼更簡潔