判断表是否需要添加租户id > 再判断语句是否需要租户id
屏蔽租户id @SqlParser(filter = true)
一、基础配置,可以看原来写的这篇
二、配置mybatis-plus(复制一下配置文件到你的配置类中即可)
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler; import com.baomidou.mybatisplus.core.parser.ISqlParser; import com.baomidou.mybatisplus.extension.plugins.OptimisticLockerInterceptor; import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor; import com.baomidou.mybatisplus.extension.plugins.PerformanceInterceptor; import com.baomidou.mybatisplus.extension.plugins.tenant.TenantHandler; import com.baomidou.mybatisplus.extension.plugins.tenant.TenantSqlParser; import net.sf.jsqlparser.expression.Expression; import net.sf.jsqlparser.expression.StringValue; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.transaction.annotation.EnableTransactionManagement; import java.util.ArrayList; import java.util.Arrays; import java.util.List; @EnableTransactionManagement(proxyTargetClass = true) @Configuration public class MybatisPlusConfig { /* * 分页插件,自动识别数据库类型 */ @Bean public PaginationInterceptor paginationInterceptor() { // 初始化 PaginationInterceptor paginationInterceptor = new PaginationInterceptor(); // 创建SQL解析器集合 List sqlParserList = new ArrayList<>(); // 创建租户SQL解析器 TenantSqlParser tenantSqlParser = new TenantSqlParser(); // 设置租户处理器 tenantSqlParser.setTenantHandler(new TenantHandler() { @Override public Expression getTenantId() { // 设置当前租户ID,实际情况你可以从cookie、或者缓存中拿都行 return new StringValue("1"); //5555 } @Override public String getTenantIdColumn() { // 对应数据库租户ID的列名 return "dept_id"; } @Override public boolean doTableFilter(String tableName) { // 过滤表:配置需要过滤的表 System.out.println("验证需要过滤的表名==========: "+tableName); List tableNameList = Arrays.asList("wx_user_tag", "b"); if (!tableNameList.contains(tableName)){ return true; }else { return false; } } }); sqlParserList.add(tenantSqlParser); paginationInterceptor.setSqlParserList(sqlParserList); return paginationInterceptor; } /** * mybatis-plus SQL执行效率插件【生产环境可以关闭】 */ @Bean public PerformanceInterceptor performanceInterceptor() { return new PerformanceInterceptor(); } @Bean public OptimisticLockerInterceptor optimisticLockerInterceptor() { return new OptimisticLockerInterceptor(); } @Bean public MetaObjectHandler metaObjectHandler() { return new CustomMetaObjectHandler(); }
下一个:java计算器页面的实现