# 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 ```