Skip to content

多租户(Multi-Tenant)

MyBatis-Plus 提供多租户支持,通过租户解析器(TenantSqlParser)或自定义拦截器实现,在 SQL 层面自动注入租户字段条件。

简单示例

java
@Bean
public TenantLineInnerInterceptor tenantLineInnerInterceptor(){
    return new TenantLineInnerInterceptor(new TenantLineHandler() {
        @Override
        public Expression getTenantId() {
            // 从上下文获取当前租户 ID
            return new LongValue(CurrentTenantHolder.get());
        }

        @Override
        public String getTenantIdColumn() {
            return "tenant_id";
        }

        @Override
        public boolean ignoreTable(String tableName) {
            // 忽略某些表
            return false;
        }
    });
}

注意

  • 多租户策略要考虑索引与性能,建议在 tenant_id 上建立索引。
  • 对于共享数据库多租户,需确保 SQL 中不会绕过租户条件。