本章概述
本章只是一个小功能的提示,不涉及源码,作为常见的问题处理记录。
问题1:数据插入数据库时间为空,不自动填充?
数据库的表中,已经是配置了自动填充的,更新时间还配置了根据当前时间戳更新,如图

但是我们整合了MyBatisPlus后,发现时间还是不能自动填充,我们需要额外的配置。配置如下:
在config包下创建 MetaObjectHandleImpl 的配置类,代码与图如下
@Component
public class MetaObjectHandleImpl 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) {
// 只更新updateTime字段
this.strictUpdateFill(metaObject, "updateTime", LocalDateTime.class, LocalDateTime.now());
}
}

配置好后,在我们需要自动填充的实体的时间属性上加上默认填充属性值,如图,也就是@TebleField注解的fill属性

特别需要注意的是,我这里使用的是LocalDateTime,因此配置需要和实体的时间属性对的上,如果你的实体属性是Date,则配置也应当为Date,如图

问题2:时间在前端显示格式不正常?
当我们写完一个数据查询并且渲染到前端后,会发现时间数据中多了一个字母 T ,如图

这也是一种格式,只是都不太适应这种格式,一般来说人们习惯于例如 2025-9-01 22:38:18这种时间格式,因此我们对于这种需求,只需为时间属性加上格式化注解就行了,如图,幽络源这里为公司实体类的“更新时间”属性,加上了JsonFormat和DateTimeFormat注解,JsonFormat用于将时间格式化为字符串,DateTimeFormat用于将字符串的时间转为后端时间的类型

加上注解后,结果如图,更新时间便“正常”了

结语
如上为幽络源的13、幽络源微服务项目实战:MyBatisPlus时间Date、LocalDateTime自动填充与格式化教程,如有疑问或对微服务感兴趣可加入我们的QQ群询问与交流:307531422
THE END

