mybatis自动填充时间字段示例代码

为了实现 mybatis 自动填充时间字段的功能,需要在实体类中加入 createTime 和 updateTime 字段,并使用注解 @TableField(fill = FieldFill.INSERT) 标记 createTime 字段,在新增时自动填入当前时间,使用注解 @TableField(fill = FieldFill.INSERT_UPDATE) 标记 updateTime 字段,在更新时自动更新为当前时间,同时需要在 Mybatis 官网中查找对应版本的插件包并导入。

以下是一个示例:

@Data
public class User implements Serializable {
    private Long id;
    private String name;
    private Integer age;
    @JsonSerialize(using = LocalDateTimeSerializer.class)
    @JsonDeserialize(using = LocalDateTimeDeserializer.class)
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;
    @JsonSerialize(using = LocalDateTimeSerializer.class)
    @JsonDeserialize(using = LocalDateTimeDeserializer.class)
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
}

在 mapper.xml 中编写相应的 SQL 语句,如下:

<insert id="insert" parameterType="com.example.demo.entity.User">
    insert into user(name, age, create_time, update_time)
    values(
    #{name}, #{age}, #{createTime}, #{updateTime}
    )
</insert>

还可以使用 Mybatis Plus 提供的自动填充功能。使用该功能需要在实体类中实现接口 IFieldFill,使用 @TableField(fill = FieldFill.INSERT_UPDATE) 标记 updateTime 字段并在实现接口时进行填充实现,如下:

@Data
@TableName(value = "user")
public class User implements Serializable, IFieldFill {
    private Long id;
    private String name;
    private Integer age;
    @JsonSerialize(using = LocalDateTimeSerializer.class)
    @JsonDeserialize(using = LocalDateTimeDeserializer.class)
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;
    @JsonSerialize(using = LocalDateTimeSerializer.class)
    @JsonDeserialize(using = LocalDateTimeDeserializer.class)
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;

    @Override
    public void insertFill(MetaObject metaObject) {
        LocalDateTime now = LocalDateTime.now();
        this.createTime = now;
        this.updateTime = now;
    }

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

在 mapper.xml 中不需要再编写相应的 SQL 语句,Mybatis Plus 会自动处理填充操作。

示例代码可以在 Mybatis官网 (https://mybatis.org/mybatis-3/)、Mybatis-Plus官网 (https://mp.baomidou.com/guide/) 上找到。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:mybatis自动填充时间字段示例代码 - Python技术站

(0)
上一篇 2023年5月20日
下一篇 2023年5月20日

相关文章

  • java开发MyBatis中常用plus实体类注解符详解

    Java开发MyBatis中常用Plus实体类注解符详解 什么是MyBatis Plus? MyBatis Plus是MyBatis的一个增强工具,在MyBatis基础之上进行扩展。MyBatis Plus提供了很多实用的增强功能,如分页查询、条件构造器、逻辑删除、自动填充等,使得开发人员可以更加快捷地编写代码。在MyBatis Plus中,实体类注解符是其…

    Java 2023年5月20日
    00
  • 聊聊Spring——AOP详解(AOP概览)

    我来详细讲解一下 “聊聊Spring——AOP详解(AOP概览)” 这篇文章的完整攻略。 什么是AOP AOP(Aspect-Oriented Programming)是一种编程思想,它通过将横切关注点(Cross-cutting Concern)从主业务逻辑中分离出来,将其封装为一种独立的模块化方式,从而使程序结构更加清晰,维护更加方便。 AOP的术语 J…

    Java 2023年5月19日
    00
  • SpringMVC全局异常处理的三种方式

    下面我将详细讲解 SpringMVC 全局异常处理的三种方式。 1. 在 Controller 中捕获并处理异常 首先,我们可以在 Controller 中通过 @ExceptionHandler 注解来捕获并处理异常。这种方式实现起来比较简单,但只适用于当前 Controller。代码示例: @RestController public class MyC…

    Java 2023年5月27日
    00
  • t01_idea消除的白框

    消除idea顶部窗口上的白色标题栏 点击Hlep,找到Edit Custom VM Options…点击 添加下面一段话(如果有责显示为false责改为true): -Dide.win.frame.decoration=true 然后重启即可,如下图所示,顶部白框已经没有出现了 原文链接:https://www.cnblogs.com/2580p/p/1…

    Java 2023年5月2日
    00
  • jQuery Ajax传值到Servlet出现乱码问题的解决方法

    下面是详细的攻略: 问题背景 在使用 jQuery Ajax 技术将数据传递到 Servlet 后台时,有时会遇到中文乱码的问题,这是因为在传输过程中,字符编码格式不统一,导致原本正确的中文字符被解析成乱码的字符。 解决方法 为了解决这个问题,我们需要对字符编码格式进行统一,可以通过以下两种方法实现。 解决方法一:手动设置字符编码格式 在 jQuery Aj…

    Java 2023年6月15日
    00
  • 浅谈springMVC拦截器和过滤器总结

    以下是关于“浅谈SpringMVC拦截器和过滤器总结”的完整攻略,其中包含两个示例。 SpringMVC拦截器和过滤器总结 SpringMVC拦截器和过滤器是两种常用的Web开发技术,它们可以用于对请求进行拦截和处理。在本文中,我们将讲解SpringMVC拦截器和过滤器的实现原理及用法。 拦截器实现原理 SpringMVC拦截器是一种用于拦截请求的机制。在S…

    Java 2023年5月17日
    00
  • Sprint Boot @SessionAttribute使用方法详解

    Spring Boot的@SessionAttribute的作用与使用方法 在Spring Boot中,@SessionAttribute注解用于将模型属性存储在HTTP会话中。通过使用@SessionAttribute注解,可以方便地在多个请求之间共享模型属性。在本文中,我们将详细介绍@SessionAttribute注解的作用和使用方法,并提供两个示例。…

    Java 2023年5月5日
    00
  • 两种用空格分隔的java字符串的方式

    确实,Java中有两种使用空格分隔字符串的方法: 使用split方法: split方法允许您将字符串分裂成子字符串数组,方法如下: String[] strArray = "Hello World".split(" "); 这将创建一个字符串数组,其中包含两个元素: “Hello” 和 “World”。您可以使用for…

    Java 2023年5月27日
    00
合作推广
合作推广
分享本页
返回顶部