基于 MyBatis Plus 实现多租户支持:数据隔离与访问控制
@Configuration
public class MybatisPlusConfig {
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
// 添加多租户插件
interceptor.addInnerInterceptor(new TenantLineInnerInterceptor(new TenantLineInnerInterceptor(){
@Override
public Expression getTenantId() {
return new LongValue(1L); // 假设当前租户ID为1
}
@Override
public boolean ignoreTable(String tableName) {
// 忽略不需要租户隔离的表
return "user".equalsIgnoreCase(tableName) || "department".equalsIgnoreCase(tableName);
}
}));
return interceptor;
}
}
这个配置类定义了一个MybatisPlusInterceptor
的Bean,并向其添加了一个自定义的TenantLineInnerInterceptor
。在这个自定义的租户线内拦截器中,我们设置了租户ID为1,并指定了一些表不需要进行租户隔离。在实际应用中,getTenantId()
和ignoreTable()
方法应根据实际情况来动态获取和判断。
评论已关闭