当前位置: 首页 > news >正文

springBoot+ druid配置多数据源

springBoot+ druid配置多数据源
1.在yml加:

spring:#1.JDBC数据源datasource:druid:first:username: PYpassword: ral2024url: jdbc:mysql://localhost:3306/mysql?serverTimezone=UTC&characterEncoding=utf8&useUnicode=true&useSSL=falsedriver-class-name: com.mysql.jdbc.Driver#初始化连接池的连接数量 大小,最小,最大initial-size: 5min-idle: 5max-active: 20#配置获取连接等待超时的时间max-wait: 60000#配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒time-between-eviction-runs-millis: 60000# 配置一个连接在池中最小生存的时间,单位是毫秒min-evictable-idle-time-millis: 30000# 配置一个连接在池中最大生存的时间,单位是毫秒max-evictable-idle-time-millis: 3000000validation-query: SELECT 1 FROM usertest-while-idle: truetest-on-borrow: truetest-on-return: false# 是否缓存preparedStatement,也就是PSCache  官方建议MySQL下建议关闭   个人建议如果想用SQL防火墙 建议打开pool-prepared-statements: truemax-pool-prepared-statement-per-connection-size: 20# 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙filters: stat,wall,slf4jfilter:stat:merge-sql: trueslow-sql-millis: 5000second:username: L2_USER_Z1password: L2_USER_Z1url: jdbc:oracle:thin:@172.16.200.60:1521:PYCXMES.PYGT.COMdriver-class-name: oracle.jdbc.OracleDriver#初始化连接池的连接数量 大小,最小,最大initial-size: 5min-idle: 5max-active: 20#配置获取连接等待超时的时间max-wait: 600000#配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒time-between-eviction-runs-millis: 60000# 配置一个连接在池中最小生存的时间,单位是毫秒min-evictable-idle-time-millis: 30000# 配置一个连接在池中最大生存的时间,单位是毫秒max-evictable-idle-time-millis: 3000000validation-query: SELECT 1 FROM usertest-while-idle: truetest-on-borrow: truetest-on-return: false# 是否缓存preparedStatement,也就是PSCache  官方建议MySQL下建议关闭   个人建议如果想用SQL防火墙 建议打开pool-prepared-statements: truemax-pool-prepared-statement-per-connection-size: 20# 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙filters: stat,wall,slf4jfilter:stat:merge-sql: true###slow-sql-millis: 5000

2.新建一个config文件
里面有3个类,分别:DruidConfigFirst ,DruidConfigSecond ,TwoDataSourceConfig
结构如图:
在这里插入图片描述

package com.alnan.config;import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.SqlSessionTemplate;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;import javax.sql.DataSource;@Configuration
@MapperScan(basePackages = "com.alnan.dao.mysql", sqlSessionTemplateRef  = "firstSqlSessionTemplate")
public class DruidConfigFirst {@Bean(name = "firstSqlSessionFactory")@Primarypublic SqlSessionFactory sqlSessionFactory(@Qualifier("firstDataSource") DataSource dataSource) throws Exception {SqlSessionFactoryBean bean = new SqlSessionFactoryBean();bean.setDataSource(dataSource);return bean.getObject();}@Bean(name = "firstTransactionManager")@Primarypublic DataSourceTransactionManager transactionManager(@Qualifier("firstDataSource") DataSource dataSource) {return new DataSourceTransactionManager(dataSource);}@Bean(name = "firstSqlSessionTemplate")@Primarypublic SqlSessionTemplate sqlSessionTemplate(@Qualifier("firstSqlSessionFactory") SqlSessionFactory sqlSessionFactory) throws Exception {return new SqlSessionTemplate(sqlSessionFactory);}
}
package com.alnan.config;import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.SqlSessionTemplate;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;import javax.sql.DataSource;@Configuration
@MapperScan(basePackages = "com.alnan.dao.oracle", sqlSessionTemplateRef  = "secondSqlSessionTemplate")
public class DruidConfigSecond {@Bean(name = "secondSqlSessionFactory")public SqlSessionFactory sqlSessionFactory(@Qualifier("secondDataSource") DataSource dataSource) throws Exception {SqlSessionFactoryBean bean = new SqlSessionFactoryBean();bean.setDataSource(dataSource);return bean.getObject();}@Bean(name = "secondTransactionManager")public DataSourceTransactionManager transactionManager(@Qualifier("secondDataSource") DataSource dataSource) {return new DataSourceTransactionManager(dataSource);}@Bean(name = "secondSqlSessionTemplate")public SqlSessionTemplate sqlSessionTemplate(@Qualifier("secondSqlSessionFactory") SqlSessionFactory sqlSessionFactory) throws Exception {return new SqlSessionTemplate(sqlSessionFactory);}}
package com.alnan.config;import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceBuilder;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;import javax.sql.DataSource;@Configuration
public class TwoDataSourceConfig {@Primary@Bean(name = "firstDataSource")@ConfigurationProperties("spring.datasource.druid.first")public DataSource first() {return DruidDataSourceBuilder.create().build();}@Bean(name = "secondDataSource")@ConfigurationProperties("spring.datasource.druid.second")public DataSource second() {return DruidDataSourceBuilder.create().build();}
}

然后怎么用呢:
在这里插入图片描述
dao 里面分开对应mysql的Mapper,oracle的Mapper

应用:正常注入就行,他会自己去对应数据库
在这里插入图片描述
3.pom:

 <dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.1.10</version></dependency>

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • qt工程中调用sdl的流程
  • centos8以上系统安装docker环境
  • CNN代码实战
  • OpenCV图像滤波(11)中值滤波medianBlur函数的使用
  • Lora 全文翻译
  • 搭建高可用OpenStack(Queen版)集群(九)之部署nova计算节点
  • Java基础——注解
  • ThreadLocal如何解决父子线程间通信问题?(上下文传递)
  • 练习题 - 探索正则表达式re功能
  • 5 大场景上手通义灵码企业知识库 RAG
  • MQ的介绍
  • 设计模式六大原则之:单一职责原则
  • 现代物理学(3)
  • 竞争与冒险/亚稳态/跨时钟域
  • 8 个最佳 Java IDE 和文本编辑器
  • Java深入 - 深入理解Java集合
  • Linux Process Manage
  • Logstash 参考指南(目录)
  • sessionStorage和localStorage
  • vue2.0一起在懵逼的海洋里越陷越深(四)
  • 百度地图API标注+时间轴组件
  • 浮动相关
  • 线性表及其算法(java实现)
  • C# - 为值类型重定义相等性
  • JavaScript 新语法详解:Class 的私有属性与私有方法 ...
  • 如何用纯 CSS 创作一个菱形 loader 动画
  • ​力扣解法汇总1802. 有界数组中指定下标处的最大值
  • # Redis 入门到精通(八)-- 服务器配置-redis.conf配置与高级数据类型
  • #gStore-weekly | gStore最新版本1.0之三角形计数函数的使用
  • #QT 笔记一
  • #前后端分离# 头条发布系统
  • #如何使用 Qt 5.6 在 Android 上启用 NFC
  • (152)时序收敛--->(02)时序收敛二
  • (4)Elastix图像配准:3D图像
  • (pt可视化)利用torch的make_grid进行张量可视化
  • (含笔试题)深度解析数据在内存中的存储
  • (回溯) LeetCode 78. 子集
  • (力扣题库)跳跃游戏II(c++)
  • (三)终结任务
  • (一)、软硬件全开源智能手表,与手机互联,标配多表盘,功能丰富(ZSWatch-Zephyr)
  • (转)EXC_BREAKPOINT僵尸错误
  • (转载)Linux网络编程入门
  • .NET Core中的时区转换问题
  • .Net6使用WebSocket与前端进行通信
  • .NET精简框架的“无法找到资源程序集”异常释疑
  • .NET与 java通用的3DES加密解密方法
  • 。。。。。
  • /proc/interrupts 和 /proc/stat 查看中断的情况
  • @ 代码随想录算法训练营第8周(C语言)|Day57(动态规划)
  • [ 蓝桥杯Web真题 ]-Markdown 文档解析
  • [20140403]查询是否产生日志
  • [BZOJ1040][P2607][ZJOI2008]骑士[树形DP+基环树]
  • [Day 8] 區塊鏈與人工智能的聯動應用:理論、技術與實踐
  • [HackMyVM]靶场Boxing
  • [JAVA]初识线程池及其基本应用