编辑 | blame | 历史 | 原始文档

前言

  • 天朝的需求千变万化,很多需求已经超出了多租户系统本身逻辑的存在
  • 针对这种情况,BladeX提供两种排除方法,其中一种为部分生效部分排除,满足大家复杂的需求

全局排除

  1. 实体类不继承TenantEntity或者没有tenantId字段,则会自动排除不会纳入多租户插件
  2. 在配置文件单独配置exclude-tables,底层租户插件则会对其进行排除
    ~~~yaml

    租户表维护

    blade:
    #多租户配置
    tenant:

    多租户对应字段

    column: tenant_id

    排除多租户逻辑

    exclude-tables:
    • tb_news
    • tb_goods
      ......................
      ~~~

局部排除

  1. 在某些特殊的业务场景,某个表需要做租户过滤,但是这个表的某几个小模块不需要租户过滤
  2. 若全局排除这个表,其他所有逻辑都自己手动实现,那会很麻烦
  3. 所以我们提供了相对便捷的方式,在不需要租户过滤的API或者Controller上加上@TenantIgnore注解就可以了
  4. 具体使用如下
    ~~~java
    @TenantIgnore
    @GetMapping("/list")
    public R<IPage> list(@ApiIgnore @RequestParam Map<String, Object> notice, Query query) {
    IPage pages = noticeService.page(Condition.getPage(query), Condition.getQueryWrapper(notice, Notice.class));
    return R.data(NoticeWrapper.build().pageVO(pages));
    }
    ~~~
    注意⚠️:@TenantIgnore注解仅仅是不参与tenant_id字段过滤,租户配置的单独数据库还是会生效的,与@NonDS的作用不一致。打上@NonDS注解后,就不会进行租户单独数据库切换,会直接变成master数据源操作,这一块大家需要注意一下。