美文网首页
mybatis plus中update_time字段未自动更新

mybatis plus中update_time字段未自动更新

作者: Nicoveu | 来源:发表于2020-08-14 14:26 被阅读0次

    mybatis plus对于create_time、update_time这样的数据库字段提供了自动插入功能,不用每次都手动进行更新,功能参见mp官方文档:https://baomidou.com/guide/auto-fill-metainfo.html,使用时仅需实现MetaObjectHandler接口,然后在对应字段上加上@TableField注解及填充策略,使用非常方便。

    官方文档使用示例

        然而,官方提供的fillStrategy方法,以及strictUpdateFill方法,默认的填充策略是

               如果属性有值则不覆盖,如果填充值为null则不填充

    所以当selectById从数据库取出旧数据,然后修改自己想修改的字段后调用updateById,会发现update_time字段不会更新,这是因为selectById可以取出update_time的旧值,更新时填充策略会判断属性已有值,不进行自动填充,因此update_time不会自动更新。而且官方目前没有直接提供强制更新的方法。

        查看fillStrategy方法源码,我们也可以看到只有属性没有被填充值,才会执行set方法。

    fillStrategy方法

        一个简单的解决方案是直接调用setFieldValByName方法,跳过null判断,强制更新updateTime为当前时间。

    修改后的updateFill

    相关文章

      网友评论

          本文标题:mybatis plus中update_time字段未自动更新

          本文链接:https://www.haomeiwen.com/subject/hbennftx.html