问答详情
源自:7-2 动态表名实现

老师请问 ,多线程(假如很多用户)使用动态表名这个功能

老师 ,想请问下如果很多人都在用某个系统的时候,10个请求去查user_2001表,10个请求去查user_2002表,10个请求去查user_2003表 ...等等

按照老师配的这种

public static ThreadLocal<String> myTableName=new ThreadLocal<String>();
MybatisPlusConfig.myTableName.set("user_2001");

以 threadlocal设置每个请求的想去访问的动态表 这样子就算用户请求有很多,也能准确查询出每个用户想要查看的表是吗。


提问者:慕粉4385183 2020-06-01 14:57

个回答

  • 老猿
    2020-07-05 17:31:25
    已采纳

           如果是web项目,可以这样写,但是别忘了,在使用结束时,要清空ThreadLocal变量,防止被线程池重用。web处理请求时,只要没处理完,当前处理请求的当前线程就不会释放,不会乱掉的。

          还有一个处理办法,将动态表名放到request对象中也可以,然后再从request中取。


  • 梦编猿
    2020-06-04 17:09:23

    +1~