@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("jiannan");
}
@Override
public String getTenantIdColumn() {
// 对应数据库租户ID的列名
return "tenant_id";
}
@Override
public boolean doTableFilter(String tableName) {
// 是否需要需要过滤某一张表
return false;
}
});
sqlParserList.add(tenantSqlParser);
paginationInterceptor.setSqlParserList(sqlParserList);
return paginationInterceptor;
}
}
1、配置后所有sql将会默认带上租户id
2、如果部分sql无需带上租户id,可使用注解,如
public interface UserMapper extends BaseMapper{ @SqlParser(filter = true) int updateByMyWrapper(@Param(Constants.WRAPPER) Wrapper userWrapper, @Param("user") User user); } # 开启 SQL 解析缓存注解生效,如果你的MP版本在3.1.1及以上则不需要配置 mybatis-plus: global-config: sql-parser-cache: true



