当前位置: 首页 > news >正文

【Java开发】 Mybatis-Plus 07:创建时间、更新时间自动添加

Mybatis-Plus 可以通过配置实体类的注解来自动添加创建时间和更新时间,这可以减轻一定的开发量。

1 在实体类中添加注解

public class User {@TableId(type = IdType.AUTO)private Long id;private String username;private String password;@TableField(fill = FieldFill.INSERT)@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") //指定格式private Date createTime;@TableField(fill = FieldFill.INSERT_UPDATE)@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")private Date updateTime;//省略Getter和Setter
}

在实体类中,通过 @TableField 注解来标识要自动添加的属性,其中 fill 属性表示填充策略,比如 FieldFill.INSERT 表示在插入数据时添加,FieldFill.INSERT_UPDATE 表示在插入和更新数据时都添加。

2 配置自动填充策略

在 Mybatis-Plus 的配置文件中,配置自动填充策略:

<bean id="myMetaObjectHandler" class="com.baomidou.mybatisplus.extension.handlers.MybatisPlusMetaObjectHandler"/>

这里使用 MybatisPlusMetaObjectHandler 来处理自动填充。在该类中,我们需要实现 insertFill updateFill 方法来进行相应的填充操作。

@Configuration//配置类
public class MybatisPlusMetaObjectHandler implements MetaObjectHandler {@Overridepublic void insertFill(MetaObject metaObject) {this.strictInsertFill(metaObject, "createTime", Date.class, new Date());this.strictInsertFill(metaObject, "updateTime", Date.class, new Date());}@Overridepublic void updateFill(MetaObject metaObject) {this.strictUpdateFill(metaObject, "updateTime", Date.class, new Date());}
}

insertFill 方法中,我们通过 strictInsertFill 方法来对实体类中的 createTime updateTime 属性进行自动填充;在 updateFill 方法中,则只对 updateTime 进行填充。

3 测试

最后在测试中插入数据,查看数据库中的数据是否自动加入了创建时间和更新时间:

@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest
public class UserMapperTest {@Autowiredprivate UserMapper userMapper;@Testpublic void insert() {User user = new User();user.setUsername("test");user.setPassword("test");userMapper.insert(user);System.out.println(user);}
}

输出结果如下:

User(id=1, username=test, password=test, createTime=2021-08-12 19:17:22, updateTime=null)

可以看到 createTime 字段已经自动加入了创建时间。

http://www.lryc.cn/news/134800.html

相关文章:

  • 解决vue2项目在IE11浏览器中无画面的兼容问题
  • 信号
  • 产品经理的真实薪资有多少?今天带你看看
  • 《一个操作系统的实现》windows用vm安装CentOS——从bochs环境搭建到第一个demo跑通
  • 线程Thread
  • 如何使用CSS实现一个渐变背景效果?
  • 初始C语言(7)——详细讲解有关初阶指针的内容
  • ArcGIS Pro技术应用(暨基础入门、制图、空间分析、影像分析、三维建模、空间统计分析与建模、python融合、案例应用)
  • RISC-V公测平台发布 · 数据库在RISC-V服务器上的适配评估
  • UE5.2 LyraDemo源码阅读笔记(五)输入系统
  • 线段树详解——影子宽度
  • 使用R语言绘制折线图
  • 无涯教程-Perl - wantarray函数
  • 【gitkraken】gitkraken自动更新问题
  • 《Java Web程序设计》试卷03
  • 怎么查看小程序中的会员信息
  • 网络安全—黑客—自学笔记
  • 深度解读波卡 2.0:多核、更有韧性、以应用为中心
  • 微服务中间件--Eureka注册中心
  • 积跬步至千里 || 矩阵可视化
  • zookeeper详细介绍
  • 面板市场趋势分析:价格上涨势头或将减缓 | 百能云芯
  • JVM性能调优
  • 【全链路追踪】XXL-JOB添加TraceID
  • [Unity]Lua本地时间、倒计时和正计时。
  • 探究HTTP API接口测试:工具、方法与自动化
  • CSS中如何实现文字溢出省略号(text-overflow: ellipsis)效果?
  • CSDN编程题-每日一练(2023-08-21)
  • 面试题-React(四):React中的事件绑定如何实现?有几种方式?
  • Docker容器:docker镜像的创建及dockerfile案例