一、前言
在我们日常的开发当中,有一些表的基础字段每次都需要修改的比如 :
createTime:创建时间 createUser:创建人 updateTime:修改时间 updateUser:修改人
- 这个时候就可以使用我们的mybatis-plus自带的自动填充功能~
二、实现
1.@TableField(value = "create_user", fill = FieldFill.INSERT)
value: 数据库里面对应的字段
fill = FieldFill.INSERT : 在新增时填充的字段
fill = FieldFill.UPDATE : 在更新时填充的字段
2.编写填充时的策略
注意:
a. 自定义一个类去实现 MetaObjectHandler 方法
(配置自定义类上必须加上 @Configuration 或者 @Component ,要不然Spring启动的时候,会扫描不到。)
b.然后大家就可以根据自己的业务编写代码了。
这里提一嘴 :metaObject.hasSetter() 这个方法是用来判断字段是否存在的 !!
package com.qianting.demo.config;
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;
import java.util.Date;
/**
* @author WangYan
* @date 2021/10/14 11:23
* 自动填充策略
*/
@Slf4j
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {
@Override
public void insertFill(MetaObject metaObject) {
log.info(" -------------------- start insert fill ... --------------------");
this.setFieldValByName("createUser","wangyan",metaObject);
this.setFieldValByName("delFlag", 1, metaObject);
// 先判断字段是否存在
boolean createTime = metaObject.hasSetter("createTime");
if (createTime) {
this.setFieldValByName("createTime",new Date(),metaObject);
}
}
@Override
public void updateFill(MetaObject metaObject) {
setFieldValByName("updateTime",new Date(),metaObject);
setFieldValByName("updateUser","wangyan",metaObject);
}
}