确认

  • [X] 我使用的版本是最新版, 并且使用插件确认过项目里无依赖版本冲突
  • [X] 我已经在 issue 中搜索过, 确认问题没有被提出过
  • [X] 我已经修改标题, 将标题中的 描述 替换为遇到的问题

当前程序版本

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

改掉你那打包资源配置没发现问题 MyBatis-Plus [错误报告]: 使用代码生成器遇到未按照自定义模板生成的问题

Comment From: YiZhouSong

示例工程你没发现你模板文件都被你忽略掉了? 非常感谢!我真是蠢到家了,忽略了查看这个配置。