07_通过 Mybatis 自动填充记录的创建时间和更新时间

07_通过 MyBatis-Plus 自动填充记录的创建时间和更新时间

在使用 MyBatis-Plus 进行数据库操作时,自动填充字段(如创建时间和更新时间)是一项非常常见的需求。本文将展示如何通过 MyBatis-Plus 实现对 createTimeupdateTime 字段的自动填充。

1. 定义 DO 类

首先,我们需要在 DO(数据对象)类中定义 createTimeupdateTime 字段,并通过注解指定其自动填充策略。

java 复制代码
@Data
public class BaseDO {

    @TableField(value = "create_time", fill = FieldFill.INSERT)
    private LocalDateTime createTime;

    @TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
}

在上面的代码中:

  • @TableField 注解用来指定字段对应的数据库列名和自动填充策略。
  • FieldFill.INSERT 表示在插入数据时自动填充该字段。
  • FieldFill.INSERT_UPDATE 表示在插入和更新数据时都自动填充该字段。

2. MyBatis-Plus 自动填充配置类

接下来,我们需要配置 MyBatis-Plus 的自动填充功能,这需要实现 MetaObjectHandler 接口,并重写 insertFillupdateFill 方法。

java 复制代码
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.time.LocalDateTime;

/**
 * MyBatis-Plus 自动填充配置类。
 */
@Configuration
public class MyBatisPlusConfig implements MetaObjectHandler {

    /**
     * 配置 MyBatis-Plus 插件,包括分页插件。
     */
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        // 添加分页插件,支持 MySQL 数据库
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
        return interceptor;
    }

    /**
     * 插入时自动填充创建时间和更新时间。
     */
    @Override
    public void insertFill(MetaObject metaObject) {
        LocalDateTime now = LocalDateTime.now();
        // 严格插入时填充字段
        this.strictInsertFill(metaObject, "createTime", LocalDateTime.class, now);
        this.strictInsertFill(metaObject, "updateTime", LocalDateTime.class, now);
    }

    /**
     * 更新时自动填充更新时间。
     */
    @Override
    public void updateFill(MetaObject metaObject) {
        // 严格更新时填充更新时间
        this.strictUpdateFill(metaObject, "updateTime", LocalDateTime.class, LocalDateTime.now());
    }
}

在配置类中:

  • insertFill 方法会在插入数据时自动填充 createTimeupdateTime 字段。
  • updateFill 方法会在更新数据时自动填充 updateTime 字段。
相关推荐
SQL-First布道者1 天前
我为什么把 MyBatis 从项目中删了?
java·spring·tomcat·mybatis·mybatis plus·spring jdbc
爱折腾的编程老炮1 天前
潮玩品牌自建抽盒机小程序——商城 + 抽盒 + 一番赏 + 会员 + 社区,一套代码怎么搭
spring boot·小程序·vue·mybatis·uniapp
kakawzw1 天前
mybatis源码笔记1——JDBC和整体架构
java·mybatis
Java小白笔记2 天前
MySQL 8.0 常用内置函数用例
数据库·mysql·mybatis
勿忘,瞬间2 天前
Mybatis高阶
java·数据库·mybatis
大梦想家a2 天前
新能源汽车共享充电桩收费管理系统的设计与实现(SpringBoot+MyBatis-Plus+Vue,前后台分离完整源码)
spring boot·汽车·mybatis
计算机学姐2 天前
基于SpringBoot的高校爱心慈善管理系统
java·vue.js·spring boot·后端·spring·tomcat·mybatis
大梦想家a2 天前
基于 Spring Boot 的物流运单管理系统后端设计与实现(JWT + MyBatis-Plus + MySQL)
spring boot·mysql·mybatis
摇滚侠3 天前
《SpringBoot 3:入门与应用实战》第 13 章 整合 MyBatis MyBatis 简单开发 阅读笔记 39
spring boot·笔记·mybatis
java1234_小锋3 天前
MyBatis-Plus 3.5.15 已全面支持 Spring Boot 4.0 及 Jackson 3.0
java·spring boot·mybatis