MybatisPlus实现插入或更新数据时,自动生成时间戳功能

数据库表对应字段的类型应该是 DateTime 或者 timestamp

我需要在插入或更新数据时,为create_time字段自动生成时间戳

只需下面两步即可完成:

1.在pojo类中,需要生成时间戳的字段上设置如下两个注解

    //字段  字段添加填充内容
@TableField(value = "create_time",fill =FieldFill.INSERT_UPDATE)
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date createTime;

其中@TableField注解中value对应的是表中的create_time字段,如果pojo类的字段名与表中字段名相同,mybatis-plus会自动进行映射,该配置可以省略,fill 这个填充配置有多种策略可选:

INSERT_UPDATE:在更新与插入时进行填充,其余的大家应该可以举一反三了吧。

@JsonFormat定义了时间戳的格式类型,后面的timezone为时间戳设置了时区

以上第一步就完成了,只要添加两个注解就搞定。

2.第二步,实现MetaObjectHandler接口完成自定义填充逻辑定义

定义一个类实现MetaObjectHandler接口

package com.mao.util;

import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;
import java.util.Date; /**
* @author mm
* @description 新增与修改数据时自动生成时间戳
* @date 2022-11-10 00:36
*/
// 将实现类注入到springboot容器中
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {
@Override
public void insertFill(MetaObject metaObject) {
// createTime 这个字段与pojo类中字段对应
this.setFieldValByName("createTime",new Date(),metaObject);
} @Override
public void updateFill(MetaObject metaObject) {
this.setFieldValByName("createTime",new Date(),metaObject);
}
}

测试结果:

在插入数据时,无需设置时间戳,mybatis-plus会自动为我们生成

————————————————

原文链接

MybatisPlus实现插入或更新数据时自动生成时间戳的更多相关文章

  1. FreeSql (十二)更新数据时指定列

    var connstr = "Data Source=127.0.0.1;Port=3306;User ID=root;Password=root;" + "Initia ...

  2. FreeSql (十三)更新数据时忽略列

    var connstr = "Data Source=127.0.0.1;Port=3306;User ID=root;Password=root;" + "Initia ...

  3. MySql LAST_INSERT_ID 【插入多条数据时】

    LAST_INSERT_ID 自动返回最后一个 INSERT 或 UPDATE 操作为 AUTO_INCREMENT 列设置的第一个发生的值. 参考这里 The ID that was generat ...

  4. mybatis 注解的方式批量插入,更新数据

    一,当向数据表中插入一条数据时,一般先检查该数据是否已经存在,如果存在更新,不存在则新增  使用关键字  ON DUPLICATE KEY UPDATE zk_device_id为主键 model  ...

  5. mongoose 更新数据时不验证数据(忽略设定的集合规则)的问题

    问题: mongoose 更新数据时不验证数据(忽略设定的集合规则)的问题 参考: http://www.mongoosejs.net/docs/api.html#updateone_updateOn ...

  6. 关于angularJS绑定数据时自动转义html标签

    关于angularJS绑定数据时自动转义html标签 angularJS在进行数据绑定时默认是会以文本的形式输出,也就是对你数据中的html标签不进行转义照单全收,这样提高了安全性,防止了html标签 ...

  7. 在Oracle中更新数据时,抛出:ORA-01008: not all variables bound

    在Oracle中更新数据时,抛出了一个 :ORA-01008 not all variables bound, 我的理解是不是所有的变量/参数都有边界,不懂: 后来知道了,原来是“不是所有变量/参数都 ...

  8. Cassandra1.2文档学习(10)—— 插入和更新数据

    参考数据:http://www.datastax.com/documentation/cassandra/1.2/webhelp/index.html#cassandra/dml/dml_about_ ...

  9. 使用SQLServer2005插入一条数据时返回当前插入数据的ID

    使用SQLServer2005插入一条数据时返回当前插入数据的ID 在执行完插入后 再执行 select @@identity from users 就OK 就是刚才插入的那行的 ID了 补充: @@ ...

  10. SQL中使用UPDATE更新数据时一定要记得WHERE子句

    我们在使用 SQL 中的 UPDATE 更新数据时,一般都不会更新表中的左右数据,所以我们更新的数据的 SQL 语句中会带有 WHERE 子句,如果没有WHERE子句,就回更新表中所有的数据,在 my ...

随机推荐

  1. 【前端开发】记一次Echart 内存泄露问题的排查

    最近发现一个web项目总是莫名其妙的内存增长,然后进行定位后来发现问题大概率出在Eharts上. 于是乎就开始搜索关于echarts内存增长的一些例子,但是都没有结果. 其中翻博客时发现甚至有人换成一 ...

  2. UNIX 系统

    UNIX 系统的历史,UNIX 是操作系统的开山鼻祖,是操作系统的发源地,后来的 Windows 和 Linux 都参考了 UNIX. 有人说,这个世界上只有两种操作系统: UNIX 和类 UNIX ...

  3. ANSYS 部件组装的注意事项

    ANSYS 中部件的装配 ANSYS 也可以实现与 Abaqus 类似的组装功能,但是要注意装配过程中材料编号,单元编号,坐标系编号的变化 具体装配流程 1.组件的创建和保存 ! 1.组件开头设置 f ...

  4. 深入理解Hadoop读书笔记-1

    背景 公司的物流业务系统目前实现了使用storm集群进行过门事件的实时计算处理,但是还有一个需求,我们需要存储每个标签上传的每条明细数据,然后进行定期的标签报表统计,这个是目前的实时计算框架无法满足的 ...

  5. pycharm-pip安装scrapy、pywifi等模块报错解决方法

    之前学Python时,使用pycharm安装一些不常用的模块时,报错,安装不成功.找了很多方法,总算好了,总结一下: 一.大部分安装不成功的原因,都是原因pip安装源地址问题. 1.在项目pip.ex ...

  6. Windows 左ctrl和左alt键互换

    reg代码 Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyb ...

  7. 从零开始构建智能聊天机器人:Rasa与ChatGPT API实战教程

    引言:AI对话系统的时代机遇 在数字化转型浪潮中,聊天机器人已成为连接用户与服务的关键纽带.无论是客服系统中的7×24小时即时响应,还是智能家居中的语音交互,聊天机器人正在重塑人机交互方式.本文将通过 ...

  8. ElasticStack从入门到精通

    什么是ElasticStack ElasticStack早期名称为elk elk代表了三个组件 ElasticSearch 负责数据存储和检索. Logstash 负责数据的采集,将源数据采集到Ela ...

  9. JMeter+Grafana+Influxdb可视化性能监控平台搭建总结

    说明:此次搭建基于unbuntu16.04系统搭建 1.安装docker 打开终端依次输入如下命令: 卸载旧版本 sudo apt-get remove docker docker-engine do ...

  10. 🎀腾讯云nodejs SDK打包体积过大吐槽事件

    简介 2025年2月1日有位开发同学batchor在GitHub上提出了issue(你们是把***打包了吗?)对腾讯云Node.js的SDK打包体积过大进行吐槽(言语偏贴吧风格略显激进),SDK打包体 ...