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会自动为我们生成
————————————————
原文链接