MybatisPlus自动填充时间的配置类实现

 更新时间:2024年12月10日 08:57:28   作者:极客编程坊  
本文介绍了如何在MyBatis-Plus中实现自动填充时间的功能,通过实现MetaObjectHandler接口,重写insertFill()和updateFill()方法,分别在插入和更新时填充创建时间和更新时间,感兴趣的可以了解一下

引言

在现代软件开发中,数据库操作是不可或缺的一部分。为了确保数据的准确性和完整性,我们常常需要在数据库记录中添加时间戳,例如创建时间和更新时间。MyBatis-Plus作为一个流行的持久层框架,提供了灵活的机制来实现这一功能。本文将详细介绍如何在MyBatis-Plus中实现自动填充时间的功能,通过实现MetaObjectHandler接口,重写insertFill()和updateFill()方法,分别在插入和更新时填充创建时间和更新时间。示例代码使用UTC时区的LocalDateTime,可以根据实际需求调整。

原理

MyBatis-Plus自动填充时间的原理:在MyBatis-Plus中,自动填充时间可以通过实现org.apache.ibatis.reflection.MetaObjectHandler接口来实现。这个接口允许我们在插入、更新等操作之前或之后,对实体对象进行自定义处理。通过重写insertFill()和updateFill()方法,我们可以在执行数据库操作时自动填充时间字段。

示例代码

实现步骤:

  • 创建MetaObjectHandler实现类:首先,我们需要创建一个实现MetaObjectHandler接口的类。在这个类中,我们将重写insertFill()和updateFill()方法来实现字段的填充逻辑。
  • 配置自动填充字段:在实体类中,需要添加创建时间、更新时间等字段,并使用@TableField注解标记这些字段的填充策略。
  • 注册MetaObjectHandler实现类:最后,我们需要将MetaObjectHandler实现类注册到MyBatis-Plus的全局配置中,以便在执行数据库操作时能够自动调用这些方法。

配置类:

package cn.tedu.tea.admin.server.core.mybatis;

import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;

import java.time.LocalDateTime;

@Component
public class TimeMetaObjectHandler implements MetaObjectHandler {
    public static final String FIELD_CREATE_TIME = "gmtCreate";
    public static final String FIELD_UPDATE_TIME = "gmtModified";
    @Override
    public void insertFill(MetaObject metaObject) {
        LocalDateTime now = LocalDateTime.now();
        this.setFieldValByName(FIELD_CREATE_TIME,now,metaObject);
        this.setFieldValByName(FIELD_UPDATE_TIME,now,metaObject);
    }

    @Override
    public void updateFill(MetaObject metaObject) {
        LocalDateTime now = LocalDateTime.now();
        this.setFieldValByName(FIELD_UPDATE_TIME,now,metaObject);
    }
}

实体类:

 /**
     * 数据创建时间
     */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime gmtCreate;

    /**
     * 数据最后修改时间
     */
    @TableField(fill = FieldFill.UPDATE)
    private LocalDateTime gmtModified;

未添加前:

在这里插入图片描述

添加后:

在这里插入图片描述

到此这篇关于MybatisPlus自动填充时间的配置类实现的文章就介绍到这了,更多相关MybatisPlus自动填充时间内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家! 

相关文章

  • Java 精炼解读数据结构的顺序表如何操作

    Java 精炼解读数据结构的顺序表如何操作

    程序中经常需要将一组数据元素作为整体管理和使用,需要创建这种元素组,用变量记录它们,传进传出函数等。一组数据中包含的元素个数可能发生变化,顺序表则是将元素顺序地存放在一块连续的存储区里,元素间的顺序关系由它们的存储顺序自然表示
    2022-03-03
  • 在Java中使用Moshi JSON库的方法详解

    在Java中使用Moshi JSON库的方法详解

    Moshi 是一个可用于 Java 与 Kotlin 的 JSON 序列化与反序列化库,其主要使用 Kotlin 编写,本文以样例代码的方式来演示该库在 Java 中的使用,需要的朋友可以参考下
    2024-04-04
  • Java日期相关API的基本操作总结

    Java日期相关API的基本操作总结

    大概总结一下日期相关API操作原因是对于日期的操作我们开发中还是很常见的,包括在数据库中保存日期,以及之前String类中对字符串的一些处理开发中都很常见,希望对大家有所帮助
    2022-11-11
  • java实现多线程文件的断点续传

    java实现多线程文件的断点续传

    这篇文章主要为大家详细介绍了java实现多线程文件的断点续传,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-06-06
  • Java 中不全部使用 Static 方法的理由

    Java 中不全部使用 Static 方法的理由

    这篇文章主要介绍了Java 中不全部使用 Static 方法的理由,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-08-08
  • Java读取项目json文件并转为JSON对象的操作

    Java读取项目json文件并转为JSON对象的操作

    这篇文章主要介绍了Java读取项目json文件并转为JSON对象的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-08-08
  • Springboot打包部署代码实例

    Springboot打包部署代码实例

    这篇文章主要介绍了Springboot打包部署代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-01-01
  • 深度剖析Java中的内存原型及工作原理

    深度剖析Java中的内存原型及工作原理

    这篇文章主要介绍了深度剖析Java中的内存原型及工作原理,本文讲解了java虚拟机内存原型、常量池、Java内存分配中的栈、Java内存分配中的堆等内容,需要的朋友可以参考下
    2015-01-01
  • java swing实现的扫雷游戏及改进版完整示例

    java swing实现的扫雷游戏及改进版完整示例

    这篇文章主要介绍了java swing实现的扫雷游戏及改进版,结合完整实例形式对比分析了java使用swing框架实现扫雷游戏功能与相关操作技巧,需要的朋友可以参考下
    2017-12-12
  • JAVA 获取系统当前时间实例代码

    JAVA 获取系统当前时间实例代码

    这篇文章主要介绍了JAVA 获取系统当前时间实例代码的相关资料,需要的朋友可以参考下
    2016-10-10

最新评论