Mybatis-Plus自动填充功能 - 踩坑

Posted Leida_wanglin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mybatis-Plus自动填充功能 - 踩坑相关的知识,希望对你有一定的参考价值。

Mybatis-Plus自动填充功能 - 踩坑

今天柯南君想用MybatisPlus自动填充功能来填充创建时间和修改时间的时候,按照Mybatis-Plus自动填充功能的配置来配置时,发现未生效。

第一步:注解填充字段

    /**
     * 创建时间
     */
    @TableField(value = "create_time", fill = FieldFill.INSERT)
    private LocalDateTime createTime;

    /**
     * 更新时间
     */
    @TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;

第二步:实现元对象处理器接口
com.baomidou.mybatisplus.core.handlers.MetaObjectHandler

@Component
public class MyMetaObjectHandler implements MetaObjectHandler 

    @Override
    public void insertFill(MetaObject metaObject) 
        this.strictInsertFill(metaObject, "createTime", LocalDateTime.class, LocalDateTime.now());
        this.strictInsertFill(metaObject, "updateTime", LocalDateTime.class, LocalDateTime.now());
    

    @Override
    public void updateFill(MetaObject metaObject) 
        this.strictUpdateFill(metaObject, "updateTime", LocalDateTime.class, LocalDateTime.now());
    

配置完这些后发现插入是没有问题的,修改了一直还是原来的时间。

我们不妨回想一下为什么要用自动填充功能

无非就是我们在插入或者修改的时候,对那些数据库里需要修改,不用代码繁琐的实现,而启用自动填充的功能。

我犯了一个最基本的错误:在用Mybatis-Plus操作数据库时,给要自动填充的字段updateTime传了值,导致自动填充功能失效。

重要的事情说三遍:

MP的自动填充功能的前提是填充字段要求为null。

MP的自动填充功能的前提是填充字段要求为null。

MP的自动填充功能的前提是填充字段要求为null。

这样自动填充功能就实现了,愿大家不要向我一样踩坑。。。

以上是关于Mybatis-Plus自动填充功能 - 踩坑的主要内容,如果未能解决你的问题,请参考以下文章

Mybatis-Plus自动填充功能 - 踩坑

Mybatis-Plus自动填充功能 - 踩坑

MyBatis-Plus-自动填充功能(学习笔记)

Mybatis-Plus:自动填充功能 @TableField

springboot 整合Mybatis-Plus分页自动填充功能

MyBatis-Plus-自动填充功能(学习笔记)