上篇文章配置了基本的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);
// 注入配置, 该配置不在代码中配置出来的话,则生该自动生成的文件不会生成对应的文件!!!!
InjectionConfig cfg = new InjectionConfig() {
@Override
public void initMap() {
// to do nothing
}
};
// 自定义输出配置
List<FileOutConfig> focList = new ArrayList<>();
// 获取目录地址
String projectPath = System.getProperty("user.dir");
// 自定义配置会被优先输出
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文件的生成地址,如果需要指定其他文件的生成地址可以继续配置多个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);
代码说明:
如果需要将生成的文件指定到某个文件下生成则可以按照如上代码编写,其中:
- 下列配置和上篇文章配置一样,或者根据自己的需要添加删减部分属性配置。
- GlobalConfig(全局配置)
- DataSourceConfig(数据库)
- PackageConfig(包配置)
- StrategyConfig(策略配置)
- PackageConfig(包配置)即使配置了默认生成路径,但是也不会在默认路径下生成指定类型的文件。
- TemplateConfig(模板配置)一定要进行配置,且指定生成的文件一定要设置生null,eg:tc.setXml(null),则不在默认路径下生成默认的.xml文件。
- FileOutConfig创建对象的时候模板路径(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>
生成示例:
引用文档:
上篇文档
mybatis-plus自定义代码模板
使用mybatis-plus逆向工程生成controller、service、mapper及XML文件,让代码更简洁