mybatis plus自动更新数据问题?

作者站长头像
站长
· 阅读数 10
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {
  @Override
  //插入时候处理
  public void insertFill(MetaObject metaObject) {
    System.out.println("insertFill");
    System.out.println(metaObject);
    this.setFieldValByName("gmtCreate", new Date().getTime(), metaObject);
    this.setFieldValByName("gmtModify", new Date().getTime(), metaObject);
  }

  @Override
  //更新时候处理
  public void updateFill(MetaObject metaObject) {
    System.out.println("updateFill");
    System.out.println(metaObject);
    //LocalDateTime.now()
    this.setFieldValByName("gmtModify", new Date().getTime(), metaObject);
  }
}
现在存在一个问题就是,新加了一个更新人的字段,但是这个更新人是前端通过header里面一个userId字段传过来的
这里怎么能够获取请求的header数据呢,大概就是获取HttpServletRequest request这个
或者是其他方式能够获取到也可以,或者可以获取到body或者query参数也行,关键是想在这里获取到前端传过来的数据
大致的想法就是在这个里面能够获取前端传来的数据参数
回复
1个回答
avatar
test
2024-07-11
ThreadLocal

RequestContextHolder

HttpServletRequest request = ((ServletRequestAttributes) (RequestContextHolder.currentRequestAttributes())).getRequest()

ThreadLocal 比较麻烦,需要如下步骤

  1. 自己封装一个ThreadLocal工具类
  2. 新增一个拦截器/拦截器 ,如:OncePerRequestFilter,在此处将数据存入ThreadLocal
  3. 在需要的地方,调用工具类内的方法,获取指定的数据

RequestContextHolder的话,直接在MyMetaObjectHandler里调用就行了,记得判断null问题

回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容