您觉得本文档还缺少什么内容?可以自己补充~

基于mybatis plus sql解析接口实现。具体代码参考:bc-databases模块。

修改配置实现租户模式切换

bc:
  database:
    #multiTenantType: NONE                          # 禁用多租户模式
    multiTenantType: COLUMN                     # 在sql中拼接租户字段模式

NONE模式 实现原理

配置文件中配置了 bc.database.multiTenantType=NONE 后,启动时不会加载任何租户解析器,即实现了禁用。

# 这里只显示该模式需要修改的配置,其他没列出来的zuihou.mysql.* 和 zuihou.database.* 不能忽略
bc:
  mysql:
    # 程序启动时默认连接的数据库,可以根据自身的需求,改成别的名字
    database: bc_none
  database:     
    multiTenantType: NONE

COLUMN模式实现原理

采用了MybatisPlus提供的TenantLineInnerInterceptor ,其实现原理为:项目启动时, 会加载配置类BaseMybatisConfiguration, 加载该类中的 mybatisPlusInterceptor 方法, 该方法将TenantLineInnerInterceptor 拦截器加载到MybatisPlus拦截器链中, 运行sql时通过该拦截器动态替换执行的sql, 在查询条件后面自动拼接 租户 字段、在insert update等sql 中动态拼接 租户 值。

需要注意,该拦截器不允许你在实体类中增加 tenantCode 字段,若手动增加了改字段,拼接出来的sql 会出现2个tenant_code 字段。

# 这里只显示该模式需要修改的配置,其他没列出来的bc.mysql.* 和 bc.database.* 不能忽略
bc:
  mysql:
    database: bc_column
  database:     
    multiTenantType: COLUMN

results matching ""

    No results matching ""