当前使用版本(必填,否则不予处理)

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 MyBatis-Plus 代码生成器自定义输出文件自动拼接前缀。