13、幽络源微服务项目实战:MyBatisPlus时间Date、LocalDateTime自动填充与格式化

13、幽络源微服务项目实战:MyBatisPlus时间Date、LocalDateTime自动填充与格式化

本章概述

本章只是一个小功能的提示,不涉及源码,作为常见的问题处理记录。

问题1:数据插入数据库时间为空,不自动填充?

数据库的表中,已经是配置了自动填充的,更新时间还配置了根据当前时间戳更新,如图

3f7a4743-d1f2-4bf3-b30e-3d82b4642f7f

但是我们整合了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());
    }
}

9ea2618f-60bc-471f-b6f6-ec97118f5cc1

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

7a22af06-4c97-4fc6-a44f-777cb9c03b8c

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

e1e07740-ff3f-42ef-8404-b2920b16ac39

问题2:时间在前端显示格式不正常?

当我们写完一个数据查询并且渲染到前端后,会发现时间数据中多了一个字母 T ,如图

5b40beef-12cf-496d-8983-623abde38490

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

3e1661dd-5ad7-41d9-a423-326d15c06487

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

d5465896-ee9f-4988-a3a7-41697d8a3cab

结语

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

THE END
喜欢就支持一下吧
分享