多数据源
# 多数据源
# 简言
基于MybatisPlus多数据源基础上,封装的。
默认以数据库提供多数据源为主。可自行替换。
# 使用方式
# 一、依赖引入
<dependency>
<groupId>cn.lovecyy</groupId>
<artifactId>relaxed-dynamic-datasource</artifactId>
<version>${revision}</version>
</dependency>
# 二、配置文件
application.yml
spring:
datasource:
url: jdbc:mysql://ip:3306/national_stamp_uat?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
username: root
password:
#查询数据sql
queryDsSql: SELECT * FROM `t_data_source`
#结果集映射数据库对应key名称 默认name
rsk:
name: db_name
# 三、使用方式
详细使用参考:https://baomidou.com/pages/a61e1b/#%E6%96%87%E6%A1%A3-documentation
# 1.使用**@DS** 切换数据源
@DS 可以注解在方法上或类上,同时存在就近原则 方法上注解 优先于 类上注解。
| 注解 | 结果 |
|---|---|
| 没有@DS | 默认数据源 |
| @DS("dsName") | dsName可以为组名也可以为具体某个库的名称 |
@Service
@DS("slave")
public class UserServiceImpl implements UserService {
@Autowired
private JdbcTemplate jdbcTemplate;
public List selectAll() {
return jdbcTemplate.queryForList("select * from user");
}
@Override
@DS("slave_1")
public List selectByCondition() {
return jdbcTemplate.queryForList("select * from user where age >10");
}
}
# 2.使用编程式切换数据源
DynamicDataSourceContextHolder.push("dbName");
try {
// business...
}
finally {
DynamicDataSourceContextHolder.poll();
}
# 附: 建表语句
/*DDL 信息*/------------
CREATE TABLE `t_data_source` (
`data_source_id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID',
`db_name` varchar(50) DEFAULT NULL COMMENT '数据源名称',
`url` varchar(255) DEFAULT NULL COMMENT '数据库连接',
`username` varchar(50) NOT NULL COMMENT '数据库用户名',
`password` varchar(100) NOT NULL COMMENT '数据库密码',
`created_time` datetime DEFAULT NULL COMMENT '创建时间',
`updated_time` datetime DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`data_source_id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=utf8 COMMENT='数据源'