Mybatis-PageHelper icon indicating copy to clipboard operation
Mybatis-PageHelper copied to clipboard

开启异步count支持后,不兼容Mybatis-Plus的多租户插件

Open java-my-life opened this issue 1 year ago • 4 comments
trafficstars

使用环境

  • PageHelper 版本: 2.0.0
  • MybatisPlus版本: 3.5.5

配置多租户插件

interceptor.addInnerInterceptor(new TenantLineInnerInterceptor(new TenantLineHandler() {
        @Override
        public Expression getTenantId() {
          return new StringValue(ContextHolder.getTenant());
        }
        @Override
        public boolean ignoreTable(String tableName) {
          return false;
        }
      }));

开启异步count支持后

发现count条件中并没有tenant_id image

关闭异步count支持后

一切正常,count条件中存在tenant_id image

java-my-life avatar Feb 18 '24 13:02 java-my-life

您的邮件王振已收到 。

cqu2014 avatar Feb 18 '24 13:02 cqu2014

考虑增加一个简单接口允许处理上下文。。在进入异步线程前执行a()方法,进入异步线程执行后执行b()方法。

a()方法可以先从ThreadLocal取值,b()方法可以存值。。执行完成后执行c()方法清理ThreadLocal,你看看是否可行?

abel533 avatar Feb 19 '24 00:02 abel533

意思是要手动把条件塞进去吗? 这样count是可以,但是正常的列表查询就会出现两条相同的条件。 目前开启异步count的话,是不是所有的实现mybatisPlus的InnerInterceptor拦截器都存在问题? 之后版本会修复这个问题吗?

java-my-life avatar Feb 19 '24 03:02 java-my-life

首先这不算问题,主要是ThreadLocal线程绑定的原因,如果在mybatis中遇到类似拦截器,都需要手动在新线程上进行绑定。

你这种情况就别用异步count了。

pagehelper avatar Feb 20 '24 00:02 pagehelper