您觉得本文档还缺少什么内容?可以自己补充~
基于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