MybatisPlus中@TableField注解实现自动填充

背景:

在做一个SpringBoot2+MybatisPlus3项目时,要求数据库中有个更新时间(UPDATE_DATE)字段,在插入和更新数据时,字段自动插入/更新为当前时间;在网上搜了很多方法,发现下面的办法比较好,嘿嘿 记录了。

解决方案:

1、在实体类的属性上添加注解,如下

/**
* 新增/更新时间 自动填充
*/
@TableField(value = "UPDATE_DATE", fill = FieldFill.INSERT_UPDATE)
private Date updateDate;

如上注解表示在新增和修改时自动填充字段。

2、新增配置类,实现MetaObjectHandler接口,并重写其方法,方法可自定义指定类型,我这里用的时间格式

@Component
public class Handler implements MetaObjectHandler {
 
    @Override
    public void insertFill(MetaObject metaObject) {
        this.setFieldValByName("updateDate", new Date(), metaObject);
 
    }
 
    @Override
    public void updateFill(MetaObject metaObject) {
        this.setFieldValByName("updateDate", new Date(), metaObject);
    }
}

完成上面两步配置后,再进行新增/修改操作,就不用再管UPDATE_DATE字段啦!

这里为什么不直接在数据库中配置呢?因为数据库中配置默认值,新增时可以满足,但是更新数据时需要写触发器,麻烦,而且会增加数据库负担。


如果不想写类去实现MetaObjectHandler接口,就在数据库中对字段配置默认值,这样新增自动填充就解决了,实体类中像下面的方法写,就能实现更新自动填充当前时间

/**
* 新增/更新时间 自动填充
*/
@TableField(value = "UPDATE_DATE", fill = FieldFill.UPDATE,update = "SYSDATE")
private Date updateDate;

 

 

 

  • 5
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值