问题分析
代码实现
@TableField
fieldFill方法是枚举
编写MyMetaObjectHandler.java
package com.taotao.reggie.common;
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;
/**
* create by 刘鸿涛
* 2022/6/1 18:05
*/
@SuppressWarnings({
"all"})
@Component //让Spring框架来管理
@Slf4j
public class MyMetaObjectHandler implements MetaObjectHandler {
@Override
public void insertFill(MetaObject metaObject) {
log.info("公共字段自动填充[insert]");
log.info(metaObject.toString());
}
@Override
public void updateFill(MetaObject metaObject) {
log.info("公共字段自动填充[update]");
log.info(metaObject.toString());
}
}
debug测试
扫描二维码关注公众号,回复:
14217510 查看本文章
注释EmployeeController.java相关数据
注释,使用公共字段自动填充
debug测试
未被赋值的都默认为null
我们在insertFll()中进行自动填充
修改Employee.java
完善EmployeeController.java新增方法save()
/**
* 插入操作, 自动填充
* @param metaObject
*/
@Override
public void insertFill(MetaObject metaObject) {
log.info("公共字段自动填充[insert]");
log.info(metaObject.toString());
metaObject.setValue("createTime", LocalDateTime.now());
metaObject.setValue("updateTime", LocalDateTime.now());
metaObject.setValue("createUser",new Long(1));
metaObject.setValue("updateUser",new Long(1));
}
测试成功
新增员工测试成功
注释EmployeeController.java中update()填充字段
完善MyMetaObjectHandler.java中update()自动填充
/**
* 更新操作,自动填充
* @param metaObject
*/
@Override
public void updateFill(MetaObject metaObject) {
log.info("公共字段自动填充[update]");
log.info(metaObject.toString());
metaObject.setValue("updateTime", LocalDateTime.now());
metaObject.setValue("updateUser",new Long(1));
}
测试成功
遇到问题
功能完善
这些类都同属一一个线程
ThreadLocal
实现步骤
编写BaseContext工具类
基于ThreadLocal封装的工具类
package com.taotao.reggie.common;
/**
* create by 刘鸿涛
* 2022/6/1 21:56
* 基于ThreadLocal封装工具类,用户保存和获取当前登录用户id
*/
@SuppressWarnings({
"all"})
public class BaseContext {
private static ThreadLocal<Long> threadLocal = new ThreadLocal<>();
public static void setCurrentId(Long id){
threadLocal.set(id);
}
public static Long getCurrentId(){
return threadLocal.get();
}
}
修改LoginCheckFilter.java的doFilter方法
修改MyMetaObjectHandler.ava
测试成功
admin测试
新增员工
更新数据
其他用户测试
更新数据