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

3.5.3

该问题是如何引起的?(确定最新版也有问题再提!!!)

AbstractTemplateEngine

protected void outputCustomFile(@NotNull List<CustomFile> customFiles, @NotNull TableInfo tableInfo, @NotNull Map<String, Object> objectMap) {
      String entityName = tableInfo.getEntityName();
      String parentPath = getPathInfo(OutputFile.parent);
      customFiles.forEach(file -> {
          String filePath = StringUtils.isNotBlank(file.getFilePath()) ? file.getFilePath() : parentPath;
          if (StringUtils.isNotBlank(file.getPackageName())) {
              filePath = filePath + File.separator + file.getPackageName();
          }
          String fileName = filePath + File.separator + entityName + file.getFileName();
          outputFile(new File(fileName), objectMap, file.getTemplatePath(), file.isFileOverride());
      });
  }

1.建议在TableInfo对象里保留一个根据表名转换后的最原始字段名,tableInfo.getEntityName()该返回值已经被entity.formatFileName污染了。比如我要自定义Vo,最终生成的Vo类名会变成TableEntityVo。fileName拼接的时候使用原始的字段名加上自定义后缀。 CustomFile.Builder().fileName("Vo").build()

2.模板路径调用getTemplateFilePath方法,会自动拼接后缀

3.模板路径只有entity可以设置kotlin,其他service、mapper、controller没有

重现步骤(如果有就写完整)

希望可以自定义类名后缀

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();
}