SpringBoot yml配置多数据源,持久层自动切换数据源

SpringBoot yml配置多数据源,持久层自动切换数据源,第1张

SpringBoot yml配置数据源,持久层自动切换数据源

SpringBoot yml文件中配置多数据源连接方式
  • springboot配置多数据源,持久层实现自动切换
    • pom文件配置
    • application.yml配置
    • 配置一个控制器,并启动程序(启动类无需进行配置,pom依赖导入后,直接在持久层接口使用@DS()注解即可)
    • 最主要的变化是持久层接口
    • 测试

当前文章是持久层注解实现数据源切换,jdbc实现数据源切换请点击

springboot配置多数据源,持久层实现自动切换

原使用jdbc方式进行连接,现需要改为在xml文件中实现查询

pom文件配置

	
			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
		

application.yml配置
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 getDemo1() throws SQLException {
    	return serivce.getDemo1();
    }
    
	@GetMapping("/getDemo2")
    public List getDemo2() throws SQLException {
    	return serivce.getDemo2();
    }
}

最主要的变化是持久层接口
@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.

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5686656.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存