像登记人,登记时间,修改人,修改时间,都进行统一处理,避免重复的代码
ThreadLocal获取当前用户id
第一步、加上@TableField注解
/**
* 登记人
*/
@TableField(fill = FieldFill.INSERT)
private String create_username;
/**
* 登记人ID
*/
@TableField(fill = FieldFill.INSERT)
private Long create_userid;
第二步,定义数据对象处理器
package com.tj.utils;
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import com.tj.system.domain.Users;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;
/**
* 自定义元数据对象处理器和@@TableField(fill = FieldFill.INSERT) 搭配使用的
*/
@Component
@Slf4j
public class MyMetaObjecthandler implements MetaObjectHandler {
//新增操作,自动填充
@Override
public void insertFill(MetaObject metaObject) {
//日期还是在数据库上设置
// metaObject.setValue("timeadd", LocalDateTime.now());
metaObject.setValue("create_userid", getUser().getId());
metaObject.setValue("create_username", getUser().getUser_name());
}
//更新操作,自动填充
@Override
public void updateFill(MetaObject metaObject) {
metaObject.setValue("update_userid", getUser().getId());
metaObject.setValue("update_username", getUser().getUser_name());
}
//从threadLocal线程上获取用户信息
private Users getUser() {
return BaseContext.getUser();
}
}