问题分析
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-u7xIJbP2-1654092509176)(%E7%91%9E%E5%90%89%E5%A4%96%E5%8D%96.assets/image-20220601174714555.png)]](https://i-blog.csdnimg.cn/blog_migrate/361fb121c48bbea06555ec31eea9f4b2.png)
代码实现
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TSeY5sqb-1654092509177)(%E7%91%9E%E5%90%89%E5%A4%96%E5%8D%96.assets/image-20220601175658682.png)]](https://i-blog.csdnimg.cn/blog_migrate/7494b66fd140dc7c82c0556974e77735.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TqzqmNqn-1654092509178)(%E7%91%9E%E5%90%89%E5%A4%96%E5%8D%96.assets/image-20220601175924504.png)]](https://i-blog.csdnimg.cn/blog_migrate/bc4106b58b47293c19edc1989a482dc3.png)
@TableField
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IqhPr12P-1654092509179)(%E7%91%9E%E5%90%89%E5%A4%96%E5%8D%96.assets/image-20220601180108584.png)]](https://i-blog.csdnimg.cn/blog_migrate/396fabbc81dc809228d2c8a4c7a57e48.png)
fieldFill方法是枚举
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2o9w4YHa-1654092509180)(%E7%91%9E%E5%90%89%E5%A4%96%E5%8D%96.assets/image-20220601180208378.png)]](https://i-blog.csdnimg.cn/blog_migrate/dd5ddb9fc262fe71cdab0949f8be6446.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cKmHJjPi-1654092509180)(%E7%91%9E%E5%90%89%E5%A4%96%E5%8D%96.assets/image-20220601180324101.png)]](https://i-blog.csdnimg.cn/blog_migrate/bfc680eab38bb9a5efc4ac62a54f778b.png)
编写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测试
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9rhH0KtX-1654092509181)(%E7%91%9E%E5%90%89%E5%A4%96%E5%8D%96.assets/image-20220601181123322.png)]](https://i-blog.csdnimg.cn/blog_migrate/7c8f6f6976ddbbdedaf0dfa6205df756.png)
注释EmployeeController.java相关数据
注释,使用公共字段自动填充
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-M5hPrVXu-1654092509181)(%E7%91%9E%E5%90%89%E5%A4%96%E5%8D%96.assets/image-20220601181946109.png)]](https://i-blog.csdnimg.cn/blog_migrate/c095606e0e1852dc16229632f8bebd68.png)
debug测试
未被赋值的都默认为null
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7Q2Se8uV-1654092509182)(%E7%91%9E%E5%90%89%E5%A4%96%E5%8D%96.assets/image-20220601205308855.png)]](https://i-blog.csdnimg.cn/blog_migrate/728421366e54d05ac2175d68503d88fe.png)
我们在insertFll()中进行自动填充
修改Employee.java
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tXIGN64F-1654092509182)(%E7%91%9E%E5%90%89%E5%A4%96%E5%8D%96.assets/image-20220601212637055.png)]](https://i-blog.csdnimg.cn/blog_migrate/d17014bcefe1a52d4e52fbaaaa77e3f7.png)
完善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));
}
测试成功
新增员工测试成功
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MhMW3s5V-1654092509182)(%E7%91%9E%E5%90%89%E5%A4%96%E5%8D%96.assets/image-20220601212759737.png)]](https://i-blog.csdnimg.cn/blog_migrate/df7f76b6057eaf546efaddc4ac9f722e.png)
注释EmployeeController.java中update()填充字段
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qfFC9296-1654092509183)(%E7%91%9E%E5%90%89%E5%A4%96%E5%8D%96.assets/image-20220601213003864.png)]](https://i-blog.csdnimg.cn/blog_migrate/47331b885f569dc743cd65f8ecf46a2a.png)
完善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));
}
测试成功
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NGQr3Z4c-1654092509183)(%E7%91%9E%E5%90%89%E5%A4%96%E5%8D%96.assets/image-20220601214129240.png)]](https://i-blog.csdnimg.cn/blog_migrate/87fc42b8196e6cd59f4daee31cf00782.png)
遇到问题
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ste0Kw55-1654092509184)(%E7%91%9E%E5%90%89%E5%A4%96%E5%8D%96.assets/image-20220601214238906.png)]](https://i-blog.csdnimg.cn/blog_migrate/588932e5b898653169d3b62d18032918.png)
功能完善
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-R5vZuMjl-1654092509184)(%E7%91%9E%E5%90%89%E5%A4%96%E5%8D%96.assets/image-20220601214346760.png)]](https://i-blog.csdnimg.cn/blog_migrate/6ea48fbc4dce092fc84595cc384a4201.png)
这些类都同属一一个线程
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VoZyNVzz-1654092509184)(%E7%91%9E%E5%90%89%E5%A4%96%E5%8D%96.assets/image-20220601214435873.png)]](https://i-blog.csdnimg.cn/blog_migrate/3837a86bc9cd69314134f72b60cdad97.png)
ThreadLocal
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-U7WkJVhu-1654092509185)(%E7%91%9E%E5%90%89%E5%A4%96%E5%8D%96.assets/image-20220601215004474.png)]](https://i-blog.csdnimg.cn/blog_migrate/e170daf676f6aeff212dc05166d0c013.png)
实现步骤
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OYTAOe4x-1654092509186)(%E7%91%9E%E5%90%89%E5%A4%96%E5%8D%96.assets/image-20220601215409608.png)]](https://i-blog.csdnimg.cn/blog_migrate/ceaba28941a008ae27a852d08876d316.png)
编写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方法
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-a63rpScU-1654092509186)(%E7%91%9E%E5%90%89%E5%A4%96%E5%8D%96.assets/image-20220601220201455.png)]](https://i-blog.csdnimg.cn/blog_migrate/0d8fa381d97a5d3e63b59a822db66a75.png)
修改MyMetaObjectHandler.ava
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TfzZoOWK-1654092509187)(%E7%91%9E%E5%90%89%E5%A4%96%E5%8D%96.assets/image-20220601220401218.png)]](https://i-blog.csdnimg.cn/blog_migrate/eabb8a416b09fc9da24fc8f3e3f1f75f.png)
测试成功
admin测试
新增员工
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GXloMavy-1654092509187)(%E7%91%9E%E5%90%89%E5%A4%96%E5%8D%96.assets/image-20220601220631395.png)]](https://i-blog.csdnimg.cn/blog_migrate/45703edbaf3cbabf379c65c470be1c59.png)
更新数据
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KUd5odx6-1654092509188)(%E7%91%9E%E5%90%89%E5%A4%96%E5%8D%96.assets/image-20220601220531908.png)]](https://i-blog.csdnimg.cn/blog_migrate/ef5d0efaadd56db5974a843e9ae9ce10.png)
其他用户测试
更新数据
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bUcY5iMm-1654092509188)(%E7%91%9E%E5%90%89%E5%A4%96%E5%8D%96.assets/image-20220601220733872.png)]](https://i-blog.csdnimg.cn/blog_migrate/3aecf6f1947520c1777e7c5540cde9a6.png)

本文档介绍了如何在MyBatisPlus中实现公共字段的自动填充,如创建时间和更新时间,并通过ThreadLocal保存和获取当前登录用户ID,确保每个操作都能关联到正确的用户。
1755

被折叠的 条评论
为什么被折叠?



