mybatisplus实现自动填充功能——自动填充时间
数据库表中的字段
- 创建时间 (createTime)
- 更新时间 (updateTime)
每次 增删改查的时候,需要通过对Entity的字段(createTime,updateTime)进行set设置,但是,每次增删改 都要set设置比较麻烦。
- 使用自动填充功能,就不用我们自己set了。
1、在实体类Entity中 添加注解
- @TableField(fill = FieldFill.INSERT) //插入时自动填充
- @TableField(fill = FieldFill.INSERT_UPDATE) // 插入 和 更新时 自动填充
2、配置自动填充 拦截器
3、数据库表中 创建时间,更新时间,创建人,更新人 字段名。
4、自动填充 拦截器
MyMetaObjectHandler
package com.sangeng.handler.mybatisplus;
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import com.sangeng.utils.SecurityUtils;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;
import java.util.Date;
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {//实现MetaObjectHandler
//配置自动填充 拦截器
//insert操作时填充方法
@Override
public void insertFill(MetaObject metaObject) {
Long userId = null;
// try {
userId = SecurityUtils.getUserId(); //从token中拿到userid,自动填充
// } catch (Exception e) { e.printStackTrace();
// 注册的时候,不能获取当前userid,所以userid设置为-1
// userId = -1L;//表示是自己创建
// }
this.setFieldValByName("createTime", new Date(), metaObject); //创建时间
this.setFieldValByName("createBy",userId , metaObject); //创建人
this.setFieldValByName("updateTime", new Date(), metaObject); //更新时间
this.setFieldValByName("updateBy", userId, metaObject); //更新人
}
//update操作时填充方法
@Override
public void updateFill(MetaObject metaObject) { //填充 更新时间
this.setFieldValByName("updateTime", new Date(), metaObject);
// this.setFieldValByName(" ", SecurityUtils.getUserId(), metaObject);
}
}
实体类
@TableField(fill = FieldFill.INSERT) //插入时 自动添加创建人
private Long createBy;
@TableField(fill = FieldFill.INSERT) //插入时 自动添加 创建时间
private Date createTime;
@TableField(fill = FieldFill.INSERT_UPDATE) //插入更新时 自动添加 更新人
private Long updateBy;
@TableField(fill = FieldFill.INSERT_UPDATE) //插入更新时 自动添加 更新时间
private Date updateTime;