mybatisplus实现自动填充时间的项目实践

 更新时间:2024年10月18日 11:39:38   作者:风也温柔☆  
在数据库操作中,频繁设置创建时间和更新时间字段非常繁琐,通过使用MyBatis-Plus的自动填充功能,可以简化操作,本文就来详细的介绍一下,感兴趣的可以了解一下

数据库表中的字段

  • 创建时间 (createTime)
  • 更新时间 (updateTime)

每次 增删改查的时候,需要通过对Entity的字段(createTime,updateTime)进行set设置,但是,每次增删改 都要set设置比较麻烦。

  • 使用自动填充功能,就不用我们自己set了。

1、在实体类Entity中 添加注解

  • @TableField(fill = FieldFill.INSERT) //插入时自动填充
  • @TableField(fill = FieldFill.INSERT_UPDATE) // 插入 和 更新时 自动填充

在这里插入图片描述

2、配置自动填充 拦截器

在这里插入图片描述

在这里插入图片描述

3、数据库表中 创建时间,更新时间,创建人,更新人 字段名。

在这里插入图片描述

4、自动填充 拦截器
MyMetaObjectHandler

package com.sangeng.handler.mybatisplus;
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import com.sangeng.utils.SecurityUtils;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;

import java.util.Date;
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {//实现MetaObjectHandler
    //配置自动填充 拦截器
    //insert操作时填充方法
    @Override
    public void insertFill(MetaObject metaObject) {
        Long userId = null;
//        try {
            userId = SecurityUtils.getUserId(); //从token中拿到userid,自动填充
//        } catch (Exception e) {     e.printStackTrace();
//        注册的时候,不能获取当前userid,所以userid设置为-1
//           userId = -1L;//表示是自己创建
//        }
        this.setFieldValByName("createTime", new Date(), metaObject);   //创建时间
        this.setFieldValByName("createBy",userId , metaObject);         //创建人
        this.setFieldValByName("updateTime", new Date(), metaObject);   //更新时间
        this.setFieldValByName("updateBy", userId, metaObject);         //更新人
    }
    //update操作时填充方法
    @Override
    public void updateFill(MetaObject metaObject) { //填充 更新时间
        this.setFieldValByName("updateTime", new Date(), metaObject);
//        this.setFieldValByName(" ", SecurityUtils.getUserId(), metaObject);
    }
}

实体类

    @TableField(fill = FieldFill.INSERT) //插入时 自动添加创建人
    private Long createBy;
    @TableField(fill = FieldFill.INSERT) //插入时 自动添加 创建时间
    private Date createTime;
    @TableField(fill = FieldFill.INSERT_UPDATE) //插入更新时 自动添加 更新人
    private Long updateBy;
    @TableField(fill = FieldFill.INSERT_UPDATE) //插入更新时 自动添加 更新时间
    private Date updateTime;

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

相关文章

  • JDK源码之Vector与HashSet解析

    JDK源码之Vector与HashSet解析

    HashSet、HashMap、ArrayList、LinkedList、Vector这几个在Java编程中经常用到,他们之间有很多联系,有很多相通的地方,我们这次先了解一下Vector与HashSet
    2021-06-06
  • maven+springboot打成jar包的方法

    maven+springboot打成jar包的方法

    这篇文章主要介绍了maven+springboot打成jar包的方法,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-10-10
  • Java 实现简易教务管理系统的代码

    Java 实现简易教务管理系统的代码

    这篇文章主要介绍了Java 实现简易教务管理系统的代码,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-07-07
  • 关于如何正确地定义Java内部类方法详解

    关于如何正确地定义Java内部类方法详解

    在Java中,我们通常是把不同的类创建在不同的包里面,对于同一个包里的类来说,它们都是同一层次的,但其实还有另一种情况,有些类可以被定义在另一个类的内部,本文将详细带你了解如何正确地定义Java内部类,需要的朋友可以参考下
    2023-05-05
  • 这一次搞懂Spring代理创建及AOP链式调用过程操作

    这一次搞懂Spring代理创建及AOP链式调用过程操作

    这篇文章主要介绍了这一次搞懂Spring代理创建及AOP链式调用过程操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-08-08
  • Java对象的复制三种方式(小结)

    Java对象的复制三种方式(小结)

    这篇文章主要介绍了Java对象的复制三种方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-08-08
  • synchronized及JUC显式locks 使用原理解析

    synchronized及JUC显式locks 使用原理解析

    这篇文章主要为大家介绍了synchronized及JUC显式locks 使用原理解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-12-12
  • SpringBoot错误提示400状态问题

    SpringBoot错误提示400状态问题

    这篇文章主要介绍了SpringBoot错误提示400状态问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-08-08
  • 解决遇到Cannot resolve ch.qos.logback:logback-classic:1.2.3错误的问题

    解决遇到Cannot resolve ch.qos.logback:logback-classic:

    当使用Maven配置项目依赖时,可能会遇到无法解析特定版本的错误,例如,logback-classic版本1.2.3可能无法在配置的仓库中找到,解决方法包括检查仓库是否包含所需版本,或更新到其他可用版本,可通过Maven官网搜索并找到适用的版本,替换依赖配置中的版本信息
    2024-09-09
  • JAVA 获取系统当前时间实例代码

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

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

最新评论