# dynamic_datasource
**Repository Path**: lu-zc/dynamic_datasource
## Basic Information
- **Project Name**: dynamic_datasource
- **Description**: Springboot实现多租户切换数据源,动态读取数据库数据源信息
- **Primary Language**: Java
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 61
- **Forks**: 5
- **Created**: 2021-04-09
- **Last Updated**: 2025-09-03
## Categories & Tags
**Categories**: Uncategorized
**Tags**: luzck
## README
# 动态数据源dynamic_datasource
#### 介绍
Springboot实现多租户切换数据源,动态读取数据库数据源信息
#### 软件架构
软件架构说明
Springboot、Alibaba Druid连接源、Mybatis
#### 使用说明
我们可以提供一个独立的库(master库)来存放租户信息,如数据库名称、链接地址、用户名、密码等,这可以统一的解决租户信息维护的问题。租户的识别和路由有很多种方法可以解决,下面列举几个常用的方式:
> 1. 可以通过 ***域名*** 的方式来识别租户:我们可以为每一个租户提供一个唯一的二级域名,通过二级域名就可以达到识别租户的能力,如tenantone.example.com,tenant.example.com;tenantone和tenant就是我们识别租户的关键信息。
> 2. 可以将租户信息作为 ***请求参数*** 传递给服务端,为服务端识别租户提供支持,如saas.example.com?tenantId=tenant1,saas.example.com?tenantId=tenant2。其中的参数tenantId就是应用程序识别租户的关键信息。
> 3. 可以在 ***请求头(Header)*** 中设置租户信息,例如JWT等技术,服务端通过解析Header中相关参数以获得租户信息。
> 4. 在用户成功登录系统后,将租户信息保存在 ***Session*** 中,在需要的时候从Session取出租户信息。
该项目接口在线文档:
***https://www.apifox.cn/apidoc/project-1669386/api-41443852***
博客文章地址:
***https://blog.csdn.net/weixin_44249490/article/details/115549319***
#### 配置说明
>application.yml租户配置信息:
```yaml
# 旧版-租户:实现动态源切换,需手动创建好不同数据源的数据库和表结构
tenant.version: v1.0
# 新版-租户:实现了动态源切换;且新增租户,动态创建数据库和基础表结构和数据
tenant.version: v2.0
```
1. 项目默认使用的是Mysql8.0版本,配置项如下:
pom依赖配置
```xml
mysql
mysql-connector-java
8.0.19
```
配置文件中mysql数据库的驱动包配置
```yaml
spring.datasource.master.driver-class-name: com.mysql.cj.jdbc.Driver
```
2. 如果Mysql5.x版本,需修改配置:
pom依赖配置
```xml
mysql
mysql-connector-java
5.1.25
```
配置文件中mysql数据库的驱动包配置
```yaml
spring.datasource.master.driver-class-name: com.mysql.jdbc.Driver
```