【项目】MybatisPlus属性自动填充
1、使用提要:
由于项目中使用的是MybatisPlus框架,它提供了自动属性填充。对于数据库中表中一般都要存在的字段,例如createTime
、updateTime
、createUser
、updateUser
此类字段。每次手动去添加无疑非常麻烦。那么就可以借用到了MybatisPlus提供的MetaObjectHandler接口。实现自动填充。使用如下:
2、操作步骤:
package com.baomidou.mybatisplus.annotation;
public enum FieldFill {
DEFAULT,
INSERT,
UPDATE,
INSERT_UPDATE;
private FieldFill() {
}
}
填充的枚举类中的四个属性、根据业务情况进行使用。大部分情况字段只需要创建时定义字段信息。那么就可以使用INSERT. 如果既需要创建又需要修改,那么则可以使用INSERT_UPDATE.
/**
* @author : Maxim
* @date : 2022-06-01 14:31
* @description :
* 自定义数据对象处理器
* 这里用到了MybatisPlus提供数据对象处理器 MetaObjectHandler
**/
@Component
@Slf4j
public class MyMetaObjectHandler implements MetaObjectHandler {
@Override
public void insertFill(MetaObject metaObject) {
/**
* 这里用到了自定义ThreadLocal:主要用于从每个运行的线程中获取拦截的用户信息。
* 详情见下方连接
* */
Employee employee = EmployeeThreadLocal.get();
metaObject.setValue("createTime", new Date());
metaObject.setValue("updateTime", new Date());
metaObject.setValue("createUser", employee.getId()); // 创建人
metaObject.setValue("updateUser", employee.getId()); // 修改人
}
@Override
public void updateFill(MetaObject metaObject) {
Employee employee = EmployeeThreadLocal.get();
metaObject.setValue("updateTime", new Date()); //修改时间
metaObject.setValue("updateUser", employee.getId()); //修改人
}
}