<p align="center">
<img src="https://images.gitee.com/uploads/images/2019/0626/231046_f44892b9_709883.png" border="0" />
</p>
<p align="center">
<strong>一个基于springboot的快速集成多数据源的启动器</strong>
</p>
<p align="center">
<a href="https://www.travis-ci.org/baomidou/dynamic-datasource-spring-boot-starter" target="_blank">
<img src="https://www.travis-ci.org/baomidou/dynamic-datasource-spring-boot-starter.svg?branch=master" >
<a href="http://mvnrepository.com/artifact/com.baomidou/dynamic-datasource-spring-boot-starter" target="_blank">
<img src="https://img.shields.io/maven-central/v/com.baomidou/dynamic-datasource-spring-boot-starter.svg" >
</a>
<a href="http://www.apache.org/licenses/LICENSE-2.0.html" target="_blank">
<img src="http://img.shields.io/:license-apache-brightgreen.svg" >
</a>
<a>
<img src="https://img.shields.io/badge/JDK-1.7+-green.svg" >
</a>
<a>
<img src="https://img.shields.io/badge/springBoot-1.4+_1.5+_2.0+-green.svg" >
</a>
</p>
# 简介
dynamic-datasource-spring-boot-starter 是一个基于springboot的快速集成多数据源的启动器。
其支持 **Jdk 1.7+, SpringBoot 1.4.x 1.5.x 2.0.x**。
**示例项目** 可参考项目下的samples目录。
# 特性
1. 数据源分组,适用于多种场景 纯粹多库 读写分离 一主多从 混合模式。
2. 内置敏感参数加密和启动初始化表结构schema数据库database。
3. 提供对Druid,Mybatis-Plus,P6sy,Jndi的快速集成。
4. 简化Druid和HikariCp配置,提供全局参数配置。
5. 提供自定义数据源来源接口(默认使用yml或properties配置)。
6. 提供项目启动后增减数据源方案。
7. 提供Mybatis环境下的 **纯读写分离** 方案。
8. 使用spel动态参数解析数据源,如从session,header或参数中获取数据源。(多租户架构神器)
9. 提供多层数据源嵌套切换。(ServiceA >>> ServiceB >>> ServiceC,每个Service都是不同的数据源)
10. 提供 **不使用注解** 而 **使用 正则 或 spel** 来切换数据源方案(实验性功能)。
11. **基于seata的分布式事务支持。**
# 约定
1. 本框架只做 **切换数据源** 这件核心的事情,并**不限制你的具体操作**,切换了数据源可以做任何CRUD。
2. 配置文件所有以下划线 `_` 分割的数据源 **首部** 即为组的名称,相同组名称的数据源会放在一个组下。
3. 切换数据源可以是组名,也可以是具体数据源名称。组名则切换时采用负载均衡算法切换。
4. 默认的数据源名称为 **master** ,你可以通过 `spring.datasource.dynamic.primary` 修改。
5. 方法上的注解优先于类上注解。
# 使用方法
1. 引入dynamic-datasource-spring-boot-starter。
```xml
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>dynamic-datasource-spring-boot-starter</artifactId>
<version>${version}</version>
</dependency>
```
2. 配置数据源。
```yaml
spring:
datasource:
dynamic:
primary: master #设置默认的数据源或者数据源组,默认值即为master
strict: false #设置严格模式,默认false不启动. 启动后在未匹配到指定数据源时候回抛出异常,不启动会使用默认数据源.
datasource:
master:
url: jdbc:mysql://xx.xx.xx.xx:3306/dynamic
username: root
password: 123456
driver-class-name: com.mysql.jdbc.Driver
slave_1:
url: jdbc:mysql://xx.xx.xx.xx:3307/dynamic
username: root
password: 123456
driver-class-name: com.mysql.jdbc.Driver
slave_2:
url: ENC(xxxxx) # 内置加密,使用请查看详细文档
username: ENC(xxxxx)
password: ENC(xxxxx)
driver-class-name: com.mysql.jdbc.Driver
schema: db/schema.sql # 配置则生效,自动初始化表结构
data: db/data.sql # 配置则生效,自动初始化数据
continue-on-error: true # 默认true,初始化失败是否继续
separator: ";" # sql默认分号分隔符
#......省略
#以上会配置一个默认库master,一个组slave下有两个子库slave_1,slave_2
```
```yaml
# 多主多从 纯粹多库(记得设置primary) 混合配置
spring: spring: spring:
datasource: datasource: datasource:
dynamic: dynamic: dynamic:
datasource: datasource: datasource:
master_1: mysql: master:
master_2: oracle: slave_1:
slave_1: sqlserver: slave_2:
slave_2: postgresql: oracle_1:
slave_3: h2: oracle_2:
```
3. 使用 **@DS** 切换数据源。
**@DS** 可以注解在方法上和类上,**同时存在方法注解优先于类上注解**。
强烈建议只注解在service实现上。
| 注解 | 结果 |
| :-----------: | :--------------------------------------: |
| 没有@DS | 默认数据源 |
| @DS("dsName") | dsName可以为组名也可以为具体某个库的名称 |
```java
@Service
@DS("slave")
public class UserServiceImpl implements UserService {
@Autowired
private JdbcTemplate jdbcTemplate;
public List<Map<String, Object>> selectAll() {
return jdbcTemplate.queryForList("select * from user");
}
@Override
@DS("slave_1")
public List<Map<String, Object>> selectByCondition() {
return jdbcTemplate.queryForList("select * from user where age >10");
}
}
```
---
### 支持一下
![uSA83t.png](https://images.gitee.com/uploads/images/2019/0921/225754_ef8c21e8_709883.png)
[![uSVpFJ.png](https://images.gitee.com/uploads/images/2019/0921/230525_be693c65_709883.png)](https://imgchr.com/i/uSVpFJ)
#### 赶紧集成体验一下吧! 如果需要更多功能请点击下面链接查看详细文档!
---
[分布式事务,加密,Druid集成,MybatisPlus集成,动态增减数据源,自定义切换规则,纯读写分离插件等等更多更细致的文档在这里](https://github.com/baomidou/dynamic-datasource-spring-boot-starter/wiki)
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
dynamic-datasource-spring-boot-starter.zip (283个子文件)
CreateDatabaseOnStarted.class 2KB
SchoolServiceImpl.class 2KB
TeacherServiceImpl.class 2KB
ApplicationTest.class 2KB
StudentServiceImpl.class 1KB
TestController.class 1KB
Teacher.class 1KB
Student.class 1KB
Application.class 839B
StudentMapper.class 727B
TeacherMapper.class 727B
TeacherService.class 475B
StudentService.class 431B
SchoolService.class 289B
file.conf 2KB
registry.conf 1KB
spring.factories 158B
.gitignore 293B
.gitignore 291B
dynamic-nest-sample.iml 10KB
dynamic-datasource-spring-boot-starter.iml 8KB
ISSUE_TEMPLATE 306B
DruidWallConfigUtil.java 18KB
DruidConfig.java 14KB
DynamicRoutingDataSource.java 11KB
Base64.java 10KB
CryptoUtils.java 9KB
HikariCpConfig.java 8KB
DruidDataSourceCreator.java 8KB
DynamicDataSourceAutoConfiguration.java 7KB
DataSourceCreator.java 6KB
DynamicDataSourceAdvisor.java 5KB
LoadController.java 4KB
DbHealthIndicator.java 4KB
BasicDataSourceCreator.java 4KB
MasterSlaveAutoRoutingPlugin.java 4KB
DataSourceProperty.java 4KB
DynamicDataSourceProperties.java 3KB
DruidWallConfig.java 3KB
Application.java 3KB
DsSpelExpressionProcessor.java 3KB
AbstractJdbcDataSourceProvider.java 3KB
DynamicDataSourceContextHolder.java 3KB
DruidConsts.java 3KB
DynamicDataSourceAnnotationInterceptor.java 3KB
DynamicDataSourceCreatorAutoConfiguration.java 3KB
DynamicDataSourceAnnotationAdvisor.java 3KB
DataSourceClassResolver.java 2KB
ScriptRunner.java 2KB
DsProcessor.java 2KB
OrderServiceImpl.java 2KB
ApplicationTest.java 2KB
AbstractDataSourceProvider.java 2KB
ProductServiceImpl.java 2KB
DruidDynamicDataSourceConfiguration.java 2KB
AbstractRoutingDataSource.java 2KB
DynamicGroupDataSource.java 2KB
AccountServiceImpl.java 2KB
HikariDataSourceCreator.java 2KB
DynamicDataSourceConfigure.java 2KB
DynamicAspectJExpressionPointcut.java 2KB
DsSessionProcessor.java 2KB
CreateDatabaseOnStarted.java 2KB
DsHeaderProcessor.java 2KB
DynamicJdkRegexpMethodPointcut.java 1KB
SchoolServiceImpl.java 1KB
YmlDynamicDataSourceProvider.java 1KB
TeacherServiceImpl.java 1KB
ApplicationTest.java 1KB
LoadBalanceDynamicDataSourceStrategy.java 1KB
DynamicDataSourceProvider.java 1KB
JndiDataSourceCreator.java 1KB
DynamicDataSourceStrategy.java 1KB
DdConstants.java 1KB
DruidMybatisApplicationTest.java 1KB
RandomDynamicDataSourceStrategy.java 1KB
DS.java 1KB
ApplicationTest.java 1KB
TestController.java 1KB
ApplicationTest.java 1KB
ErrorCreateDataSourceException.java 1KB
UserServiceImpl.java 1KB
StudentServiceImpl.java 1KB
ApplicationTest.java 1KB
UserServiceImpl.java 1024B
ApplicationTest.java 1021B
NamedThreadLocal.java 952B
ExpressionMatcher.java 938B
DruidStatConfig.java 937B
SwaggerAutoConfig.java 936B
DruidSlf4jConfig.java 935B
RegexMatcher.java 934B
OrderController.java 920B
UserServiceImpl.java 907B
UserController.java 901B
UserServiceImpl.java 881B
DataSourceDTO.java 816B
Matcher.java 771B
Order.java 761B
User.java 760B
共 283 条
- 1
- 2
- 3
资源评论
0x2015
- 粉丝: 112
- 资源: 10
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- libjpeg 编译所需的 Win32.mak vs编译libjpeg
- 自动驾驶-状态估计和定位-粒子滤波实现和源码.pdf
- 数据可视化-智慧物流服务中心大屏页面.zip
- yolov5,SSD 可能使用到的一些代码
- bbbbbbbbbbbbbbbbbb
- 安卓逆向学习笔记之Frida Stalker 还原OLLVM AES.docx
- 安卓逆向学习笔记之unicorn来trace还原OLLVM Base64.docx
- 基于jquery的自定义表格组件实现
- Nessus最新20240426离线安装插件all-2.0.tar.gz
- 最新版本私钥助记词碰撞器大富豪使用python进行制作通过接口的方式进行验证支持多币种多链多网络一分钟万次验证高出货率
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功