MyBatisPlus官方文档
https://mp.baomidou.com/guide/annotation.html#enumvalue
完整代码
@Configuration
public class MyBatisPlusConfig {
@Bean
public MybatisPlusInterceptor paginationInterceptor() {
MybatisPlusInterceptor mybatisPlusInterceptor = new MybatisPlusInterceptor();
// 多租户拦截器
mybatisPlusInterceptor.addInnerInterceptor(new TenantLineInnerInterceptor(new TenantLineHandler() {
@Override
public String getTenantIdColumn() {
return "com_id";
}
@Override
public Expression getTenantId() {
return new LongValue(0L);
}
@Override
public boolean ignoreTable(String tableName) {
List<String> tableNameList = new ArrayList<>();
// 表过滤
tableNameList.add("activity");
// 特定sql过滤需要用到@InterceptorIgnore(tenantLine = "1")注解,在mapper层接口的方法上使用
if (tableNameList.contains(tableName)){
return false;
}
return true;
}
}));
// 分页拦截器
mybatisPlusInterceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
return mybatisPlusInterceptor;
}
}
@Mapper
public interface ActivityMapper extends BaseMapper<Activity> {
@InterceptorIgnore(tenantLine = "1")
IPage<ActivityVO> getByPage(Page page, @Param("dto") ActivityDTO activityDTO);
}
注意点:
1、MyBatisPlus版本为3.5.2
2、多租户拦截器需在分页拦截器之前添加
3、getTenantIdColumn()多租户字段可以使用动态,需要请看官方文档
5、getTenantId()是从上下文中获取对应的租户id
6、ignoreTable()方法的返回值,true:表示忽略,false:需要解析并拼接多租户条件
7、Mapper层接口的特定方法过滤是使用注解,
老版本中是:@SqlParser(filter = true) 但是已弃用
新版本中是:@@InterceptorIgnore(tenantLine = "1")