mybatis plus 自动填充

本文详细解析了 MyBatis Plus 中 @TableField 注解及其 FieldFill 属性的使用方法,通过实例展示了如何在实体类中应用注解实现创建时间和更新时间的自动填充,并介绍了拦截器的具体实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、涉及的注解:@TableField

2、注解的属性:FieldFill

// 属性值
public enum FieldFill {
    DEFAULT, //默认值
    INSERT, // 添加自动注入
    UPDATE, // 更新自动注入
    INSERT_UPDATE; // 更细、添加自动注入

    private FieldFill() {
    }
}

实际使用:

// 实体类
public class log{
	@TableField(fill = FieldFill.INSERT)
    private Long createTime;
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Long updateTime;
} 

// 拦截类

@Component
public class AutoFillMetaHandle  implements MetaObjectHandler {

	// 添加拦截
    @Override
    public void insertFill(MetaObject metaObject) {
        String createTimeField = "createTime";
        if (metaObject.hasSetter(createTimeField)) {
            this.strictInsertFill(metaObject, createTimeField,
             	Long.class, System.currentTimeMillis());
        }
    }
	// 更新拦截
    @Override
    public void updateFill(MetaObject metaObject) {
        String updateTimeField = "updateTime";
        if (metaObject.hasSetter(updateTimeField)) {
            this.strictUpdateFill(metaObject, updateTimeField, 
            	Long.class,System.currentTimeMillis());
        }
    }
}   

优先级:
如果被标注的属性在入库的时候,被你赋值了,那么拦截器就不会给它赋值了。



简单总结记录,如有不足,欢迎指出交流!

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值