基于 dynamic-datasource-spring-boot-starter实现,理论上支持此组件的全部功能。
如何使用

1. 业务服务引入动态数据源服务

com.hzjt gczjt-common-datasource
  1. 配置数据源信息来源 (JDBC配置)

默认查询本服务数据源 gen_datasource_conf ,可参考 gczjt_codegen 模块

spring:
datasource:
druid:
query-ds-sql: ‘select * from gen_datasource_conf where del_flag = 0’

3. 开启动态数据源

// 注意此注解方案所有注解之上
@EnableDynamicDataSource
..
@xx
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
}

4. 使用动态数据源查询

oMapper 层 @Ds(“#last”) 固定写法,最后一个参数为指定数据源(必须有)
@Mapper
public interface DemoMapper extends BaseMapper {
@DS(“#last”)
Map selectDs(String dsName);
}
oService 层调用
@Service
public class DemoServiceImpl extends ServiceImpl<DemoMapper, Demo> implements DemoService {
@Override
public Object getByDs(Integer id) {
// 此处 dsName 为以上 gen_datasource_conf 加载数据源 name 字段
return baseMapper.selectDs(“hzjt_core”);
}
}

扩展使用

o可以参考官方文档: 动态参数解析数据源
@DS(“#session.tenantName”)//从session获取
public List selectSpelBySession() {
return userMapper.selectUsers();
}

@DS(“#header.tenantName”)//从header获取
public List selectSpelByHeader() {
return userMapper.selectUsers();
}

@DS(“#tenantName”)//使用spel从参数获取
public List selectSpelByKey(String tenantName) {
return userMapper.selectUsers();
}

@DS(“#user.tenantName”)//使用spel从复杂参数获取
public List selecSpelByTenant(User user) {
return userMapper.selectUsers();
}

Mysql - 读写分离与读负载均衡之Maxscale

https://www.cnblogs.com/ddzj01/p/11573842.html

文档更新时间: 2021-08-10 17:00   作者:admin