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如何实现文件压缩与上传FTP

    Java如何实现文件压缩与上传FTP

    这篇文章主要介绍了Java如何实现文件压缩与上传FTP,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-06-06
  • Java中实现Unicode编码解码的方法

    Java中实现Unicode编码解码的方法

    在Java编程中,Unicode编码解码是一项基本的操作,Unicode是一种用于表示文字字符的标准编码,它包含了世界上几乎所有的字符,包括各种语言的字母、符号和表情符号等,在Java中通过Unicode编码,我们可以将任意字符转换为字节流进行传输和存储
    2024-02-02
  • Spring中Bean的加载与SpringBoot的初始化流程详解

    Spring中Bean的加载与SpringBoot的初始化流程详解

    这篇文章主要介绍了Spring中Bean的加载与SpringBoot的初始化流程详解,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-11-11
  • SpringCloud Gateway路由表配置实现小结

    SpringCloud Gateway路由表配置实现小结

    SpringCloudGateway通过路由表将请求转发到不同的服务或地址,每个路由包含id、uri、predicates和filters等字段,下面就来介绍一下SpringCloud Gateway路由如何配置,感兴趣的可以了解一下
    2026-01-01
  • Java FutureTask类使用案例解析

    Java FutureTask类使用案例解析

    这篇文章主要介绍了Java FutureTask类使用案例解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值析,需要的朋友可以参考下
    2020-04-04
  • Spring自动扫描无法扫描jar包中bean的解决方法

    Spring自动扫描无法扫描jar包中bean的解决方法

    在日常开发中往往会对公共的模块打包发布,然后调用公共包的内容。然而,最近对公司的公共模块进行整理发布后。spring却无法扫描到相应的bean,下面这篇文章主要给大家介绍了关于Spring自动扫描时无法扫描jar包中bean的解决方法,需要的朋友可以参考下。
    2017-06-06
  • 9个小技巧让你的Java if else看起来更优雅

    9个小技巧让你的Java if else看起来更优雅

    这篇文章主要给大家介绍了9个小技巧,通过这几个小技巧可以让你的Java if else看起来更优雅,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • SpringBoot http请求注解@RestController原理解析

    SpringBoot http请求注解@RestController原理解析

    这篇文章主要介绍了SpringBoot http请求注解@RestController原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-01-01
  • Java扑克牌速算24的方法

    Java扑克牌速算24的方法

    这篇文章主要为大家详细介绍了Java扑克牌速算24的方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-03-03
  • 搭建Spring MVC和Vue3的应用程序的实现

    搭建Spring MVC和Vue3的应用程序的实现

    本文主要介绍了搭建Spring MVC和Vue3的应用程序的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-11-11

最新评论