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

MybatisPlus实现插入或更新数据时,自动生成时间戳功能
首先看下数据库表:
MybatisPlus实现插入或更新数据时自动生成时间戳_第1张图片我需要在插入或更新数据时,为create_time字段自动生成时间戳
只需下面两步即可完成:
1.在pojo类中,需要生成时间戳的字段上设置如下两个注解

 @TableField(value = "create_time",fill =FieldFill.INSERT_UPDATE)
 @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")

MybatisPlus实现插入或更新数据时自动生成时间戳_第2张图片
其中@TableField注解中value对应的是表中的create_time字段,如果pojo类的字段名与表中字段名相同,mybatis-plus会自动进行映射,该配置可以省略,fill 这个填充配置有多种策略可选:
MybatisPlus实现插入或更新数据时自动生成时间戳_第3张图片
INSERT_UPDATE:在更新与插入时进行填充,其余的大家应该可以举一反三了吧。
@JsonFormat定义了时间戳的格式类型,后面的timezone为时间戳设置了时区
以上第一步就完成了,只要添加两个注解就搞定。
2.第二步,实现MetaObjectHandler接口完成自定义填充逻辑定义
定义一个类实现MetaObjectHandler接口

import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;
import java.util.Date;

/**
 * @author wjs
 * @description 新增与修改数据时自动生成时间戳
 * @date 2022-08-22 16:56
 */
 // 将实现类注入到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实现插入或更新数据时自动生成时间戳_第4张图片

你可能感兴趣的:(ORM框架,mybatis)