- springboot配置多数据源,持久层实现自动切换
- pom文件配置
- application.yml配置
- 配置一个控制器,并启动程序(启动类无需进行配置,pom依赖导入后,直接在持久层接口使用@DS()注解即可)
- 最主要的变化是持久层接口
- 测试
当前文章是持久层注解实现数据源切换,jdbc实现数据源切换请点击
springboot配置多数据源,持久层实现自动切换原使用jdbc方式进行连接,现需要改为在xml文件中实现查询
pom文件配置application.yml配置org.springframework.boot spring-boot-starter-jdbc org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-autoconfigure 2.5.7 com.oracle.database.jdbc ojdbc8 21.1.0.0 com.baomidou dynamic-datasource-spring-boot-starter 3.4.1
server:
port: 80
spring:
datasource:
dynamic:
primary: master #设置默认的数据源或者数据源组,默认值即为master
strict: false #设置严格模式,默认false不启动,启动后在未匹配到指定数据源时,会抛出异常,不启动则使用默认数据源
datasource:
master: #主数据源
username: username
password: password
url: jdbc:oracle:thin:@ip:1521:newtest
driver-class-name: oracle.jdbc.OracleDriver
db2: #子数据源
username: username2
password: password2
url: jdbc:oracle:thin:@ip:1521:newtest
driver-class-name: oracle.jdbc.OracleDriver
配置一个控制器,并启动程序(启动类无需进行配置,pom依赖导入后,直接在持久层接口使用@DS()注解即可)
package com.heiaxin.demo.controller.DemoController;
import com.heiaxin.demo.service.DemoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import java.sql.SQLException;
import java.util.List;
import java.util.Map;
@RestController
public class DemoController {
@Autowired
DemoService service;
@GetMapping("/getDemo1")
public List
最主要的变化是持久层接口
@Mapper
public interface DemoMapper{
Integer getDemo();
@DS("db2) // 设置getDemo2方法使用数据源db2进行查询
Integer getDemo2();
}
测试
直接在流程器访问:http://localhost/getDemo1,http://localhost/getDemo2 ,
这里demo1和demo2可以在xml中写一个不同数据源,同表的count(1) 查询,将master数据源同表数据insert10条,db2同表数据insert20条,页面上会展示getDemo1为10,getDemo2为20.



