背景
使用了分页插件 + 租户插件的场景
如果先加入 分页插件会导致分页插件自动生成 count 查询的 sql 不会追加 and tenant_id =xxxx 的 sql 条件语句,最终 Total 结果不正确
需要按此,先加入租户插件,然后加入分页插件。
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
interceptor.addInnerInterceptor(new TenantLineInnerInterceptor(new TenantLineHandler() {
@Override
public Expression getTenantId() {
// 获取当前 tenantId
return new LongValue(CurrentUser.get().getTenantId().toString());
}
@Override
public boolean ignoreTable(String tableName) {
if(hzBusinessValue.getIgnoreTableList() == null || hzBusinessValue.getIgnoreTableList().size() ==0){
return false;
}
for (int i = 0; i < hzBusinessValue.getIgnoreTableList().size(); i++) {
if(tableName.equalsIgnoreCase(hzBusinessValue.getIgnoreTableList().get(i))){
return true;
}
}
return false;
}
}));
// 坑爹问题,先加入分页插件会导致 查询 分页的 count 时 租户插件不生效
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
return interceptor;
}
评论区