e.equalsIgnoreCase(tableName)
);
}
};
}
-
- /**
- * 过滤不需要根据租户隔离的MappedStatement
- */
- @Bean
- public ISqlParserFilter sqlParserFilter() {
- return metaObject -> {
- MappedStatement ms = SqlParserHelper.getMappedStatement(metaObject);
- return tenantProperties.getIgnoreSqls().stream().anyMatch(
- (e) -> e.equalsIgnoreCase(ms.getId())
- );
- };
- }
}
diff --git a/zlt-commons/zlt-db-spring-boot-starter/src/main/java/com/central/db/interceptor/CustomTenantInterceptor.java b/zlt-commons/zlt-db-spring-boot-starter/src/main/java/com/central/db/interceptor/CustomTenantInterceptor.java
new file mode 100644
index 0000000000000000000000000000000000000000..f2083e7f231c6777bb95662bd8914972166f0cc9
--- /dev/null
+++ b/zlt-commons/zlt-db-spring-boot-starter/src/main/java/com/central/db/interceptor/CustomTenantInterceptor.java
@@ -0,0 +1,44 @@
+package com.central.db.interceptor;
+
+import com.baomidou.mybatisplus.extension.plugins.handler.TenantLineHandler;
+import com.baomidou.mybatisplus.extension.plugins.inner.TenantLineInnerInterceptor;
+import org.apache.ibatis.executor.Executor;
+import org.apache.ibatis.mapping.BoundSql;
+import org.apache.ibatis.mapping.MappedStatement;
+import org.apache.ibatis.session.ResultHandler;
+import org.apache.ibatis.session.RowBounds;
+
+import java.sql.SQLException;
+import java.util.List;
+
+/**
+ * MyBatis-plus租户拦截器
+ *
+ * @author zlt
+ * @version 1.0
+ * @date 2022/5/6
+ *
+ * Blog: https://zlt2000.gitee.io
+ * Github: https://github.com/zlt2000
+ */
+public class CustomTenantInterceptor extends TenantLineInnerInterceptor {
+ private List ignoreSqls;
+
+ public CustomTenantInterceptor(TenantLineHandler tenantLineHandler, List ignoreSqls) {
+ super(tenantLineHandler);
+ this.ignoreSqls = ignoreSqls;
+ }
+
+ @Override
+ public void beforeQuery(Executor executor, MappedStatement ms, Object parameter, RowBounds rowBounds
+ , ResultHandler resultHandler, BoundSql boundSql) throws SQLException {
+ if (isIgnoreMappedStatement(ms.getId())) {
+ return;
+ }
+ super.beforeQuery(executor, ms, parameter, rowBounds, resultHandler, boundSql);
+ }
+
+ private boolean isIgnoreMappedStatement(String msId) {
+ return ignoreSqls.stream().anyMatch((e) -> e.equalsIgnoreCase(msId));
+ }
+}