动态数据源
pig 的多数据配置,是基于 dynamic-datasource-spring-boot-starter实现,理论上支持此组件的全部功能。
如何使用
1. 业务服务引入动态数据源服务
<dependency><groupId>com.pig4cloud</groupId><artifactId>pig-common-datasource</artifactId></dependency>
2. 配置数据源信息来源 (JDBC配置)
## 默认查询本服务数据源 ` gen_datasource_conf` ,可参考 `pig_codegen` 模块spring:datasource:druid:query-ds-sql: 'select * from gen_datasource_conf where del_flag = 0'

3. 开启动态数据源
@EnableDynamicDataSourcepublic class App {public static void main(String[] args) {SpringApplication.run(App.class, args);}}
4. 使用动态数据源查询
Mapper 层
**@Ds("#last")**固定写法,最后一个参数为指定数据源(必须有)
@Mapperpublic interface DemoMapper extends BaseMapper<Demo> {@DS("#last")Map selectDs(String dsName);}
- Service 层调用
@Servicepublic class DemoServiceImpl extends ServiceImpl<DemoMapper, Demo> implements DemoService {@Overridepublic Object getByDs(Integer id) {// 此处 dsName 为以上 gen_datasource_conf 加载数据源 name 字段return baseMapper.selectDs("pigxx_core");}}
扩展使用
@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();}

