当前使用版本(必填,否则不予处理)
3.5.3
该问题是如何引起的?(确定最新版也有问题再提!!!)
使用低版本自定义代码模板输出可以指定文件名,新版本它会默认拼接实体类名。 比如我想覆盖默认模板, 因为生成得实体类统一带PO后缀, 我自定义模板输出就是默认给我拼接进去了, 编程了xxPO+自定义fileName。 https://github.com/baomidou/generator/blob/67702d096fc1ba003134a5e98d4ec4dfdc65cbe6/mybatis-plus-generator/src/main/java/com/baomidou/mybatisplus/generator/engine/AbstractTemplateEngine.java#L78
重现步骤(如果有就写完整)
报错信息
Comment From: qclucky7
同#5056
Comment From: qmdx
请关注版本 3.5.3.2 发布,已支持 https://github.com/baomidou/mybatis-plus/commit/a3d77099404e6ac26a4fe06b3b9fd924dfb4a5df
@Test
public void testCustomFileByList() {
// 设置自定义输出文件
AutoGenerator generator = new AutoGenerator(DATA_SOURCE_CONFIG);
generator.strategy(strategyConfig().build());
// 警用默认模板
generator.template(templateConfig().disable(TemplateType.CONTROLLER).build());
generator.injection(injectionConfig().customFile(new ArrayList<CustomFile>() {{
add(new CustomFile.Builder().fileName("DTO.java").templatePath("/templates/dto.java.vm").packageName("dto").build());
add(new CustomFile.Builder().fileName("VO.java").templatePath("/templates/vo.java.vm").packageName("vo").build());
// 通过格式化函数添加文件最后缀
add(new CustomFile.Builder().formatNameFunction(tableInfo -> "Prefix" + tableInfo.getEntityName() + "Suffix")
.fileName("Controller.java").templatePath("/templates/controller.java.vm").packageName("controller").build());
}}).build());
generator.global(globalConfig().build());
generator.execute();
}
Comment From: wangxx07
1、引入的3.5.9的版本
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.5.9</version>
</dependency>
2、这是我的vo.java.vm模版文件
#if(${entitySerialVersionUID})
public class ${entity}VO implements Serializable {
#else
public class ${entity}VO {
#end
3、customFiles 设置
List<CustomFile> customFiles = new ArrayList<>();
customFiles.add(new CustomFile.Builder()
.formatNameFunction(tableInfo ->
tableInfo.getEntityName().replaceAll("DO", ""))
.packageName("model.vo")
.fileName("VO.java")
.templatePath("/templates/vo/VO.java.vm")
.enableFileOverride()
.build());
最终的结果是文件名称没有DO,但是类名还是有DO