确认
当前程序版本
3.5.9
问题描述
最新版本的代码生成器,我在策略模式配置自定义的模板信息,但是生成文件时使用的仍旧是默认的模板,并未使用自定义的模板。 代码如下: public static void main(String[] args) { // 数据库配置 DataSourceConfig.Builder dataSourceConfig = new DataSourceConfig.Builder(url, username, password) .dbQuery(new MySqlQuery())// 数据库类型转换器 .typeConvert(new MySqlTypeConvertCustom()) .keyWordsHandler(new MySqlKeyWordsHandler());
FastAutoGenerator.create(dataSourceConfig)
// 全局配置(GlobalConfig)
.globalConfig(builder -> {
// 设置作者
builder.author(author);
//开启 swagger 模式 默认值:false
if (StringUtils.isNotBlank(doc) && Objects.equals("swagger", doc)) {
builder.enableSwagger();
}
//开启 springdoc 模式 默认值:false
if (StringUtils.isNotBlank(doc) && Objects.equals("springdoc", doc)) {
builder.enableSpringdoc();
}
builder.disableOpenDir() //禁止打开输出目录 默认值:true
.commentDate("yyyy-MM-dd HH:mm:ss") //注释日期
.dateType(DateType.TIME_PACK) //定义生成的实体类中日期类型 默认值: DateType.TIME_PACK
.outputDir(System.getProperty("user.dir") + "/src/main/java");// 指定输出目录 默认值: windows:D:// linux or mac : /tmp
})
// 包配置(PackageConfig)
.packageConfig(builder -> {
builder.parent(packageName); // 父包名
// 设置父包模块名 默认值:无
if (StringUtils.isNotBlank(modelName)) {
builder.moduleName(modelName);
}
builder.controller("controller") // Controller 包名 默认值:controller
.entity(modelPackagePrefix + "entity") // Entity 包名 默认值:entity
.service("service") // Service 包名 默认值:service
.serviceImpl("service.impl")// impl包名 默认值:service.impl
.mapper("mapper"); // Mapper 包名 默认值:mapper
//.pathInfo(Collections.singletonMap(OutputFile.xml, System.getProperty("user.dir") + "/src/main/resources/mapper")) // 设置mapperXml生成路径 默认存放在mapper的xml
})
// 注入配置(InjectionConfig)
.injectionConfig(consumer -> {
consumer.beforeOutputFile((tableInfo, objectMap) -> System.out.println("tableInfo: " + tableInfo.getEntityName() + " objectMap: " + objectMap.size()));
Map<String, Object> customMap = new HashMap<>();
modelName = StringUtils.isBlank(modelName) ? "" : "." + modelName;
customMap.put("DTO", packageName + modelName + "." + modelPackagePrefix + "dto");
customMap.put("VO", packageName + modelName + "." + modelPackagePrefix + "vo");
consumer.customMap(customMap);
consumer.customFile(
Arrays.asList(
new CustomFile.Builder().fileName("Dto.java").templatePath("/template/dto.java.vm")
.packageName(modelPackagePrefix + "dto").enableFileOverride().build(),
new CustomFile.Builder().fileName("QueryDto.java").templatePath("/template/queryDto.java.vm")
.packageName(modelPackagePrefix + "dto").enableFileOverride().build(),
new CustomFile.Builder().fileName("Vo.java").templatePath("/template/vo.java.vm")
.packageName(modelPackagePrefix + "vo").enableFileOverride().build()
));
})
// 策略配置(StrategyConfig)
.strategyConfig(builder -> {
// 设置需要生成的表名
if (ArrayUtils.isEmpty(tables)) {
// 如果无法输入请修改idea配置:help -> Edit Custom VM Options -> 最后追加:-D editable.java.test.console=true -> 重启idea
Scanner scanner = new Scanner(System.in);
System.out.println("请输入需要生成的表名,多个用逗号隔开:");
String in = scanner.next();
scanner.close();
tables = in.split(",");
}
builder.addInclude(tables);
// 设置过滤表前缀
if (ArrayUtils.isNotEmpty(tablePrefix)) {
builder.addTablePrefix(tablePrefix);
}
// 实体类策略配置
Entity.Builder entityBuilder = builder.entityBuilder();
// 设置实体类模板
entityBuilder.javaTemplate("/templates/entity.java");
// 设置实体类的父类
if (Objects.nonNull(superEntityClass)) {
entityBuilder.superClass(superEntityClass);
// 添加父类公共字段
if (ArrayUtils.isNotEmpty(superEntityColumns)) {
entityBuilder.addSuperEntityColumns(superEntityColumns);
}
}
//entityBuilder.idType(IdType.ASSIGN_ID)//主键策略 如果是自增的话可以不用设置、默认是自增
// 自动填充配置 数据库字段名称
if (CollectionUtils.isNotEmpty(tableFills)) {
entityBuilder.addTableFills(tableFills);
}
// 自动填充配置 实体类字段名称
if (CollectionUtils.isNotEmpty(entityFills)) {
entityBuilder.addTableFills(entityFills);
}
//.disableSerialVersionUID() //禁止生成serialVersionUID
entityBuilder.enableLombok() //开启lombok
.enableRemoveIsPrefix(); //开启移除is前缀
// 说明逻辑删除是哪个字段
if (StringUtils.isNotBlank(logicDelete)) {
entityBuilder.logicDeleteColumnName(logicDelete);
}
entityBuilder.enableTableFieldAnnotation()// 属性加上注解说明
.enableFileOverride(); // 开启覆盖已有文件
//controller 策略配置
builder.controllerBuilder()
.template("/templates/controller.java")
.formatFileName("%sController")
.enableRestStyle() // 开启RestController注解
.enableHyphenStyle() // 开启驼峰转连字符
.enableFileOverride(); // 开启覆盖已有文件
// service策略配置
builder.serviceBuilder()
.serviceTemplate("/templates/service.java")
.serviceImplTemplate("/templates/serviceImpl.java")
.formatServiceFileName("%sService")
.formatServiceImplFileName("%sServiceImpl")
.enableFileOverride(); // 开启覆盖已有文件
// mapper策略配置
builder.mapperBuilder()
.mapperTemplate("/templates/mapper.java")
.mapperXmlTemplate("/templates/mapper.xml")
.formatMapperFileName("%sMapper")
.mapperAnnotation(Mapper.class)//mapper注解
.formatXmlFileName("%sMapper")
.enableBaseColumnList()// 开启BaseColumnList
.enableBaseResultMap()// 开启BaseResultMap
.enableFileOverride(); // 开启覆盖已有文件
})
//.templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
.execute();
}
详细堆栈日志
No response
Comment From: nieqiurong
提供复现工程
Comment From: YiZhouSong
spring-boot4.zip @nieqiurong 您好,这是我做的demo工程。
Comment From: nieqiurong
示例工程你没发现你模板文件都被你忽略掉了?
Comment From: nieqiurong
改掉你那打包资源配置没发现问题
Comment From: YiZhouSong
示例工程你没发现你模板文件都被你忽略掉了? 非常感谢!我真是蠢到家了,忽略了查看这个配置。