- 问题分析
- 代码实现
- 编写MyMetaObjectHandler.java
- debug测试
- 注释EmployeeController.java相关数据
- debug测试
- 修改Employee.java
- 完善EmployeeController.java新增方法save()
- 测试成功
- 注释EmployeeController.java中update()填充字段
- 完善MyMetaObjectHandler.java中update()自动填充
- 测试成功
- 遇到问题
- 功能完善
- ThreadLocal
- 实现步骤
- 编写BaseContext工具类
- 修改LoginCheckFilter.java的doFilter方法
- 修改MyMetaObjectHandler.ava
- 测试成功
- admin测试
- 其他用户测试
@TableField
编写MyMetaObjectHandler.javafieldFill方法是枚举
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;
@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测试
注释EmployeeController.java相关数据
debug测试注释,使用公共字段自动填充
未被赋值的都默认为null
修改Employee.java 完善EmployeeController.java新增方法save()我们在insertFll()中进行自动填充
@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()自动填充新增员工测试成功
@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;
@SuppressWarnings({"all"})
public class BaseContext {
private static ThreadLocal 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测试
新增员工
其他用户测试更新数据
更新数据



