目录
1. 前言
前篇博客介绍了用基本的方式做多数据源,可以应对一般的情况,但是遇到一些复杂的情况就需要扩展下功能了,比如:动态增减数据源、数据源分组,纯粹多库,读写分离一主多从,从其他数据库或者配置中心读取数据源等等。其实就算没有这些需求,使用此款框架实现多数据源也比之前要便捷,快速的多
2. 框架简介
dynamic-datasource-spring-boot-starter
是一个基于 Springboot
的快速集成多数据源的启动器
文档:https://github.com/baomidou/dynamic-datasource-spring-boot-starter
文档:https://gitee.com/baomidou/dynamic-datasource-spring-boot-starter
它跟 mybatis-plus
是一个生态圈里的,都是由苞米豆团队出品,很容易集成 mybatis-plus
3. 基本使用
3.1. 框架说明
- 本框架只做
切换数据源
这件核心的事情,并不限制你的具体操作,切换了数据源可以做任何CRUD
- 配置文件所有以下划线
_
分割的数据源首部
即为组的名称,相同组名称的数据源会放在一个组下 - 切换数据源可以是组名,也可以是具体数据源名称。组名则切换时采用负载均衡算法切换
- 默认的数据源名称为
master
,你可以通过spring.datasource.dynamic.primary
修改 - 方法上的注解优先于类上注解
DS
支持继承抽象类上的DS
,暂不支持继承接口上的DS
3.2. 与 Springboot
的整合
3.2.1. 数据准备
Springboot
版本:2.0.6.RELEASE
MySQL
版本:5.7
分别创建数据库 test1,test2
,数据库表均为 goods
,数据不相同
CREATE TABLE `goods` (
`goodsId` bigint(11) unsigned NOT NULL AUTO_INCREMENT COMMENT 'id',
`goodsName` varchar(500) NOT NULL DEFAULT '' COMMENT 'name',
`subject` varchar(200) NOT NULL DEFAULT '' COMMENT '标题',
`price` decimal(15,2) NOT NULL DEFAULT '0.00' COMMENT '价格',
`stock` int(11) NOT NULL DEFAULT '0' COMMENT 'stock',
PRIMARY KEY (`goodsId`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COMMENT='商品表';
test1
数据库数据如下
test2
数据库数据如下
3.2.2. 引入依赖
至于其他依赖,不再赘述
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>dynamic-datasource-spring-boot-starter</artifactId>
<version>3.3.2</version>
</dependency>
3.2.3. Springboot
配置文件
配置文件详情可以参考官方文档
server.port=8080
#设置test1为主数据源
spring.datasource.dynamic.primary=master
#test1主数据源配置
spring.datasource.dynamic.datasource.master.url=jdbc:mysql://127.0.0.1:3306/test1?characterEncoding=utf8&useSSL=false&autoReconnect=true&serverTimezone