色空大师 2025-05-12 16:31 采纳率: 42.3%
浏览 6
已结题

使用mybatis-plus-generator-ui自动生代码,在页面选择了自动填充字段后生成代码报错,提示没有insert枚举

使用mybatis-plus-generator-ui自动生代码,在页面选择了自动填充字段后生成代码报错,提示没有insert枚举

  • 写回答

4条回答 默认 最新

  • 宝码香车 优质创作者: JavaScript技术领域 2025-05-12 16:33
    关注

    让【宝码香车】来帮你解答,本回答参考DeepSeek编写,并整理提供。
    如果还有疑问可以点击头像关注私信或评论。如果答案让您满意,请采纳、点赞、关注,非常感谢!

    MyBatis-Plus Generator UI 自动填充字段报错解决方案

    问题分析

    您在使用 MyBatis-Plus Generator UI 时,选择了自动填充字段后生成代码报错,提示"没有 insert 枚举"。这通常是由于自动填充配置不正确导致的。

    解决方案

    1. 检查自动填充字段配置

    确保您在 Generator UI 界面中正确配置了自动填充字段。通常需要指定字段名称和填充策略。

    2. 修改代码生成配置

    在您的生成器配置中,需要正确设置自动填充策略。以下是一个示例配置:

    // 策略配置
    StrategyConfig strategy = new StrategyConfig();
    strategy.setEntityLombokModel(true);
    
    // 自动填充配置
    TableFill createTime = new TableFill("create_time", FieldFill.INSERT);
    TableFill updateTime = new TableFill("update_time", FieldFill.INSERT_UPDATE);
    ArrayList<TableFill> tableFills = new ArrayList<>();
    tableFills.add(createTime);
    tableFills.add(updateTime);
    strategy.setTableFillList(tableFills);
    

    3. 确保实体类注解正确

    生成的实体类中应该有以下注解:

    import com.baomidou.mybatisplus.annotation.FieldFill;
    import com.baomidou.mybatisplus.annotation.TableField;
    
    public class YourEntity {
        @TableField(fill = FieldFill.INSERT)
        private Date createTime;
        
        @TableField(fill = FieldFill.INSERT_UPDATE)
        private Date updateTime;
    }
    

    4. 实现 MetaObjectHandler

    您需要实现一个 MetaObjectHandler 来处理自动填充逻辑:

    import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
    import org.apache.ibatis.reflection.MetaObject;
    import org.springframework.stereotype.Component;
    
    @Component
    public class MyMetaObjectHandler implements MetaObjectHandler {
        @Override
        public void insertFill(MetaObject metaObject) {
            this.strictInsertFill(metaObject, "createTime", Date.class, new Date());
            this.strictInsertFill(metaObject, "updateTime", Date.class, new Date());
        }
    
        @Override
        public void updateFill(MetaObject metaObject) {
            this.strictUpdateFill(metaObject, "updateTime", Date.class, new Date());
        }
    }
    

    常见问题排查

    1. 确保使用了正确的 FieldFill 枚举值:INSERT、UPDATE 或 INSERT_UPDATE
    2. 检查字段名称是否匹配:配置中的字段名必须与实体类中的字段名完全一致
    3. 确认 MetaObjectHandler 已注册为 Spring Bean:添加 @Component 注解

    如果问题仍然存在,请检查 MyBatis-Plus Generator UI 的版本是否与 MyBatis-Plus 核心库版本兼容。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 5月20日
  • 已采纳回答 5月12日
  • 创建了问题 5月12日