@Configuration
public class MyBatisPlusConfig {
/**
* 分页插件
*
* @return
*/
@Bean
public PaginationInterceptor paginationInterceptor() {
PaginationInterceptor paginationInterceptor = new PaginationInterceptor();
// 创建SQL解析器集合
List<ISqlParser> 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) {
// 是否需要需要过滤某一张表
/* List<String> tableNameList = Arrays.asList("sys_user");
if (tableNameList.contains(tableName)){
return true;
}*/
return false;
}
});
sqlParserList.add(tenantSqlParser);
paginationInterceptor.setSqlParserList(sqlParserList);
return paginationInterceptor;
}
}
1、配置后所有sql将会默认带上租户id
2、如果部分sql无需带上租户id,可使用注解,如
/**
* 用户 Mapper 接口
*/
public interface UserMapper extends BaseMapper<User> {
/**
* 自定Wrapper修改
*
* @param userWrapper 条件构造器
* @param user 修改的对象参数
* @return
*/
@SqlParser(filter = true)
int updateByMyWrapper(@Param(Constants.WRAPPER) Wrapper<User> userWrapper, @Param("user") User user);
}
# 开启 SQL 解析缓存注解生效,如果你的MP版本在3.1.1及以上则不需要配置
mybatis-plus:
global-config:
sql-parser-cache: true