确认

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

当前程序版本

3.5.14

问题描述

使用generator3.5.14版本生成xml文件的BaseResultMap时出现报错

环境配置

jdk21 mysql8.4

依赖版本

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus</artifactId>
    <version>3.5.14</version>
</dependency>
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-generator</artifactId>
    <version>3.5.14</version>
</dependency>
<dependency>
    <groupId>com.jfinal</groupId>
    <artifactId>enjoy</artifactId>
    <version>5.1.3</version>
</dependency>

配置代码

FastAutoGenerator.create("jdbc:mysql://127.0.0.1:3306/erjia?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true", "developer", "comeonmysql")
                .globalConfig(builder -> {
                    builder.author("xxxx");
                })
                .packageConfig(builder -> {
                    builder.parent("com.xxx.program");
                })
                .strategyConfig(builder -> {
                    builder.addInclude("xxxx");
                    builder.entityBuilder()
                            .enableFileOverride()
                            .disableSerialVersionUID()
                            .enableLombok()
                            .enableTableFieldAnnotation()
                            .logicDeleteColumnName("deleted")
                            .formatFileName("%sEnt");
                    builder.mapperBuilder()
                            .enableFileOverride()
                            .enableBaseColumnList()
                            .enableBaseResultMap();
                    builder.serviceBuilder()
                            .enableFileOverride()
                            .formatServiceFileName("%sService");
                    builder.controllerBuilder()
                            .enableFileOverride()
                            .enableHyphenStyle()
                            .enableRestStyle();
                })
                .templateEngine(new EnjoyTemplateEngine())
                .execute();

详细堆栈日志

Caused by: com.jfinal.template.TemplateException: public field not found: "field.keyFlag" and public getter method not found: "field.getKeyFlag()"
Template: "/templates/mapper.xml.ej". Line: 14
    at com.jfinal.template.expr.ast.Field.eval(Field.java:95)
    at com.jfinal.template.stat.ast.If.exec(If.java:53)
    at com.jfinal.template.stat.ast.For.forIterator(For.java:74)
    at com.jfinal.template.stat.ast.For.exec(For.java:53)
    at com.jfinal.template.stat.ast.StatList.exec(StatList.java:68)
    at com.jfinal.template.stat.ast.If.exec(If.java:54)
    at com.jfinal.template.stat.ast.StatList.exec(StatList.java:68)
    at com.jfinal.template.Template.render(Template.java:74)
    at com.jfinal.template.Template.renderToString(Template.java:91)
    at com.baomidou.mybatisplus.generator.engine.EnjoyTemplateEngine.writer(EnjoyTemplateEngine.java:55)
    at com.baomidou.mybatisplus.generator.engine.AbstractTemplateEngine.outputFile(AbstractTemplateEngine.java:190)
    ... 7 more