Skip to content

多租户

说明

多租户就是类似多个子系统;多租户应该是数据绝对隔离的
多租户是围绕实体进行自动设置租户ID,通常在 from(实体类),join(实体类),delete(实体类),update(实体类)

示例

实体类

java
@Data
@Table
public class SysUser {

    @TableId
    private Integer id;

    private String userName;

    private String password;
    
    private Integer roleId;

    private LocalDateTime createTime;

    @TenantId
    private Integer tenantId;
}

Mapper

继承 MybatisMapper 即可

java
public interface SysUserMapper extends MybatisMapper<SysUser> {

}

设置租户ID

java
TenantContext.registerTenantGetter(() -> {
    return 2;
});

如果想临时关闭

java
TenantContext.registerTenantGetter(() -> {
     if(临时关闭){
         //返回null 即可
        return null;    
     }
     return 2;
});

如何使用

java
@Service
public class Test{

    @Autowired
    private SysUserMapper sysUserMapper;

    public void demo() {
        SysUser sysUser=new SysUser();
        sysUserMapper.save(sysUser);
    }
}

save时 tenantId 字段会自动填充,update、delete自动会增加租户ID条件

前往@TenantId 查看