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

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

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

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

经验分享 程序员 微信小程序 职场和发展