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会自动为我们生成
测试插入结果

————————————————
原文链接

posted @ 2022-11-10 00:44  没有烦恼的猫猫  阅读(1488)  评论(0编辑  收藏  举报