前言
在实际开发中我们往往要实现多个数据源的信息操作,比如查询一个数据源的名称时,还要将该数据的其他信息从另一个数据源中提取,如果是多个数据源的话,使用静态的往往比较麻烦,这里我使用动态的进行数据源连接。
这里感谢其他博主的分享,参考文章:第八章 springboot + mybatis + 多数据源,springBoot 动态数据源以及Mybatis多数据源
多数据源切换逻辑
在我们操作数据库时,一般是Controller调用Service,Service再通过Dao操作数据库,我们要实现数据源的切换,只要在Dao层在操作数据库之前把数据源更改,再将sql语句执行就可以了
废话不多说,我们先把整个项目的结构整理一下:
这个项目的名称是ninemysql,包使用默认的com.example
下面这个图用来理解common包和datasource包中的作用
在我们开始项目之前,我们需要先将pom.xml文件添加依赖
<dependencies>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.0.26</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
<!--页面依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<!-- freemaker依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>
</dependencies>
第一步、配置application.properties的两个数据源
这里我连接的是本地的两个库,可以修改localhost来连接其他ip数据库
#spring.datasource.driver-class-name=com.mysql.jdbc.Driver
#spring.datasource.url=jdbc:mysql://localhost:3306/my
#spring.datasource.username=root
#spring.datasource.password=root
#the person datasource
datasource.person.driverClassName=com.mysql.jdbc.Driver
datasource.person.url=jdbc:mysql://localhost:3306/test
datasource.person.username=root
datasource.person.password=root
#the users datasource
datasource.users.driverCla