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:自动填充功能 @TableField