像登记人,登记时间,修改人,修改时间,都进行统一处理,避免重复的代码
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@Slf4jpublic class MyMetaObjecthandler implements MetaObjectHandler {//新增操作,自动填充@Overridepublic void insertFill(MetaObject metaObject) {//日期还是在数据库上设置// metaObject.setValue("timeadd", LocalDateTime.now());metaObject.setValue("create_userid", getUser().getId());metaObject.setValue("create_username", getUser().getUser_name());}//更新操作,自动填充@Overridepublic void updateFill(MetaObject metaObject) {metaObject.setValue("update_userid", getUser().getId());metaObject.setValue("update_username", getUser().getUser_name());}//从threadLocal线程上获取用户信息private Users getUser() {return BaseContext.getUser();}}
