栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

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

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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.

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/686110.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号