• @TableField(fill = FieldFill.INSERT)这个注解的作用


    在这里插入图片描述

    @TableFieldMyBatis-Plus提供的一个注解,用于标注实体类的属性与数据库表的字段之间的映射关系。当你在一个实体类的属性上使用 @TableField(fill =FieldFill.INSERT) 注解时,你告诉 MyBatis-Plus 在插入记录时自动填充这个字段。

    FieldFill.INSERT 是一个枚举值,表示只在插入操作时进行字段的自动填充。

    这是一个示例:

    import com.baomidou.mybatisplus.annotation.TableField;
    import com.baomidou.mybatisplus.annotation.TableName;
    import com.baomidou.mybatisplus.annotation.FieldFill;
    
    @TableName("user")
    public class User {
        private Long id;
        private String name;
    
        @TableField(fill = FieldFill.INSERT)
        private LocalDateTime createTime;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    在上面的例子中,createTime 字段被标注为在插入操作时自动填充。为了实际实现这个自动填充,你需要定义一个实现了 MetaObjectHandler 接口的类,并在这个类中指定如何填充字段:

    import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
    import org.apache.ibatis.reflection.MetaObject;
    import org.springframework.stereotype.Component;
    
    import java.time.LocalDateTime;
    
    @Component
    public class MyMetaObjectHandler implements MetaObjectHandler {
    
        @Override
        public void insertFill(MetaObject metaObject) {
            this.strictInsertFill(metaObject, "createTime", LocalDateTime.class, LocalDateTime.now());
        }
    
        @Override
        public void updateFill(MetaObject metaObject) {
            // 如果需要在更新时填充字段,可以在这里实现
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    在这个例子中,insertFill 方法通过调用 strictInsertFill 方法来指定当插入操作发生时,createTime 字段应该被填充为当前时间。

    这样,当你插入一个 User 对象时,无论你是否为 createTime 设置了值,它都会在插入数据库时被自动填充为当前时间。这样可以确保数据的一致性,并且简化了插入操作的代码。

    如果您觉得我所提供的信息对您有帮助,欢迎您点赞、收藏和评论。如果您想要更深入的交流,您可以添加我的微信号,或者关注我的微信公众号。您的支持和鼓励是我持续写作的动力,我期待与您互动并提供更多有价值的信息。

  • 相关阅读:
    Vue 2和Vue 3透传Attributes特性
    六千字呕心沥血深度总结,为您揭秘ClickHouse为什么查询这么快!
    Cesium-03:洪水淹没
    时间序列分析 | Python实现LazyProphet时间序列分析
    按键中断控制实验
    基于深度学习的端到端自动驾驶的最新进展:调研综述
    运维工程师怎么找兼职?什么样的兼职合适?
    Linux 基本语句_8_C语言_文件控制
    购买密封测试接头时双方应如何有效的快速沟通
    运营活动服务端研发总结
  • 原文地址:https://blog.csdn.net/weixin_50503886/article/details/134092241