前言
一个个性化mybatis-plus中拦截器的需求,类似租户那种,动态的在sql中插入一个sql片段。
直接仿写的TenantLineInnerInterceptor
拦截器,写了一个自定义的拦截器。
然后发现要把我的自定义参数带入进去的时候,方法嵌套太多了,写着写着发现每个方法都带上了参数,其实不是每个方法都用,就是最底层的方法需要用到这个参数。然后就想到了利用ThreadLocal类,以前学过,却一次也没有使用,这次属实时赶上趟了。
使用
定义一个ThreadLocal属性,然后利用set()、get()
方法,最后结束的时候调用一下remove()
方法。
private static final ThreadLocal<Tuple2<JSONObject, String>> threadLocal
= new ThreadLocal<>();
总结
其实就是一个属于线程的缓存。