MybatisPlus实现插入或更新数据时自动生成时间戳
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实现插入或更新数据时自动生成时间戳的更多相关文章
- FreeSql (十二)更新数据时指定列
var connstr = "Data Source=127.0.0.1;Port=3306;User ID=root;Password=root;" + "Initia ...
- FreeSql (十三)更新数据时忽略列
var connstr = "Data Source=127.0.0.1;Port=3306;User ID=root;Password=root;" + "Initia ...
- MySql LAST_INSERT_ID 【插入多条数据时】
LAST_INSERT_ID 自动返回最后一个 INSERT 或 UPDATE 操作为 AUTO_INCREMENT 列设置的第一个发生的值. 参考这里 The ID that was generat ...
- mybatis 注解的方式批量插入,更新数据
一,当向数据表中插入一条数据时,一般先检查该数据是否已经存在,如果存在更新,不存在则新增 使用关键字 ON DUPLICATE KEY UPDATE zk_device_id为主键 model ...
- mongoose 更新数据时不验证数据(忽略设定的集合规则)的问题
问题: mongoose 更新数据时不验证数据(忽略设定的集合规则)的问题 参考: http://www.mongoosejs.net/docs/api.html#updateone_updateOn ...
- 关于angularJS绑定数据时自动转义html标签
关于angularJS绑定数据时自动转义html标签 angularJS在进行数据绑定时默认是会以文本的形式输出,也就是对你数据中的html标签不进行转义照单全收,这样提高了安全性,防止了html标签 ...
- 在Oracle中更新数据时,抛出:ORA-01008: not all variables bound
在Oracle中更新数据时,抛出了一个 :ORA-01008 not all variables bound, 我的理解是不是所有的变量/参数都有边界,不懂: 后来知道了,原来是“不是所有变量/参数都 ...
- Cassandra1.2文档学习(10)—— 插入和更新数据
参考数据:http://www.datastax.com/documentation/cassandra/1.2/webhelp/index.html#cassandra/dml/dml_about_ ...
- 使用SQLServer2005插入一条数据时返回当前插入数据的ID
使用SQLServer2005插入一条数据时返回当前插入数据的ID 在执行完插入后 再执行 select @@identity from users 就OK 就是刚才插入的那行的 ID了 补充: @@ ...
- SQL中使用UPDATE更新数据时一定要记得WHERE子句
我们在使用 SQL 中的 UPDATE 更新数据时,一般都不会更新表中的左右数据,所以我们更新的数据的 SQL 语句中会带有 WHERE 子句,如果没有WHERE子句,就回更新表中所有的数据,在 my ...
随机推荐
- 一款torrent文件格式分析工具(绿色纯天然)
点击下载 1.主界面 2.文件分析(显示文件所在分片的位置) 3.获取指定分片所在的peers服务器列表 一只会铲史的猫
- BGP四大属性
**公认必遵**:Origin.AS_Path.Next_hop(所有BGP路由都必须识别这类属性,且必须在Update报文中传递,如果缺少就报错) Origin:指示路由信息的来源(如IGP.EGP ...
- Proxmox VE安装CentOS 8.3
相信玩服务器/VPS的对CentOS一定不陌生,CentOS 是一个基于Red Hat Linux 提供的可自由使用源代码的企业级Linux发行版本.因为是免费的,现在很多WEB服务器和VPS都经常使 ...
- harbor
一篇带你了解私有仓库 Harbor 的搭建 一.Harbor简介 虽然Docker官方提供了公共的镜像仓库,但是从安全和效率等方面考虑,部署我们私有环境内的Registry也是非常必要的. Harbo ...
- 【Python自动化测试环境管理】tox
1. tox基本介绍 1.1 tox是什么? tox 是一个用于管理 Python 项目的自动化测试和环境管理工具.它的主要功能是创建虚拟环境并运行项目的测试套件,tox能够让我们在同一个Host上自 ...
- Jenkins合并代码Git报错处理过程
#jenkins合并代码时候报错内容#10:36:08 ! [rejected] HEAD -> master (non-fast-forward)#10:36:08 error: failed ...
- Warning MVC1000
场景重现 视图文件中有些代码如下: @Html.Partial("_Footer") 会出现警告: // 警告 MVC1000 Use of IHtmlHelper.Partial ...
- Transformer自注意力機制如何捕捉“今昔對仗”
讀者希望我結合<道德經>等文言文實踐,展示自注意力機制如何捕捉"今昔對仗". 首先,讀者之前指出:在總結鄧鴻的丼型結構時遺漏了關鍵點,並強調要批判瑪律可夫假設而非全面否 ...
- 理解PostgreSQL和SQL Server中的文本数据类型
理解PostgreSQL和SQL Server中的文本数据类型 在使用PostgreSQL时,理解其文本数据类型至关重要,尤其对有SQL Server背景的用户而言.尽管两个数据库系统都支持文本存储, ...
- PyInstaller 常用用法
PyInstaller 常用用法 PyInstaller 是一个跨平台的 Python 应用打包工具,支持 Windows/Linux/MacOS 三大主流平台,能够把 Python 脚本及其所在的 ...