SpringBoot配置MySQL和Oracl双数据源(Mybatis)

springbootmysql,多oracle,多mongodb数据源 阅读详情

一、前言

目前SpringBoot的版本已经是2.2.2了,2.0以后的版本就已经默认使用hikari作为连接池了。因此整合hikari也变得十分简单了,下面介绍一下在2.0以后的SpringBoot版本中如何配置一Mysql数据源和Oracle数据源。

二、配置文件

application.yml文件 如下

spring:
  datasource:  #数据源
    hikari:
     # 第一个Mysql数据源配置
      master:
        jdbc-url: jdbc:mysql://127.0.0.1:3306/test1?characterEncoding=UTF-8&serverTimezone=UTC&useSSL=false&allowPublicKeyRetrieval=true
        username: root
        password: 123456
        #  Spring Boot已经换新的啦 
        # driverClassName: com.mysql.jdbc.Driver
        driverClassName: com.mysql.cj.jdbc.Driver
        type: com.zaxxer.hikari.HikariDataSource
         # 连接池中维护的最小空闲连接数
        minimum-idle: 5
         # 配置最大池大小
        maximum-pool-size: 15
         # 配置从池返回的连接的默认自动提交行为。默认值为true。
        auto-commit: true
        # 允许连接在连接池中空闲的最长时间(以毫秒为单位)
        idle-timeout: 30000 
         # 连接池的用户定义名称,主要出现在日志记录和JMX管理控制台中以识别池和池配置
        pool-name: HikariDataPool
         # 池中连接关闭后的最长生命周期(以毫秒为单位)
        max-lifetime: 1800000
        # 客户端等待连接池连接的最大毫秒数
        connection-timeout: 30000 
        # 测试连接
        connection-test-query: select 1 from dual
      # 第二个Oracle数据源 
      core:
        jdbc-url: jdbc:oracle:thin:@127.0.0.1:1521:test2
        username: root
        password: 123456
        driverClassName: oracle.jdbc.OracleDriver
        type: com.zaxxer.hikari.HikariDataSource
        minimum-idle: 5
        maximum-pool-size: 15
        max-lifetime: 1800000
        idle-timeout: 30000
        connection-timeout: 30000
        pool-name: HikariDataPoolOracle
        connection-test-query: select 1 from dual

三、配置类

1)Oracle数据源配置类

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.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.jdbc.DataSourceBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;

import javax.sql.DataSource;

@Configuration
@MapperScan(basePackages = "com.zlc.springcloud.repository.*.coresystem", sqlSessionFactoryRef = "coreSqlSessionFactory")
public class CoreDataSourceConfig {
    @Bean(name = "coreDataSource")
    @ConfigurationProperties(prefix = "spring.datasource.hikari.core")
    public DataSource getCoreDataSource() {
        return DataSourceBuilder.create().build();
    }

    @Bean(name = "coreSqlSessionFactory")
    public SqlSessionFactory coreSqlSessionFactory(@Qualifier("coreDataSource") DataSource dataSource) throws Exception {
        SqlSessionFactoryBean sqlSessionFactoryBean=new SqlSessionFactoryBean();
        sqlSessionFactoryBean.setDataSource(dataSource);
        //xml位置
        sqlSessionFactoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:/mapper/**/coresystem/*.xml"));
        return sqlSessionFactoryBean.getObject();

    }
    @Bean(name = "coreSqlSessionTemplate")
    public SqlSessionTemplate coreSqlSessionTemplate(@Qualifier("coreSqlSessionFactory") SqlSessionFactory sqlSessionFactory){
        return new SqlSessionTemplate(sqlSessionFactory);
    }

}

2)Mysql数据源配置类

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.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.jdbc.DataSourceBuilder;
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.zlc.springcloud.repository.*.master", sqlSessionFactoryRef = "masterSqlSessionFactory")
public class MasterDataSourceConfig {

    @Bean(name = "masterDataSource")
    @ConfigurationProperties(prefix = "spring.datasource.hikari.master")
    public DataSource getMasterDataSource() {
        return DataSourceBuilder.create().build();
    }

    @Bean(name = "masterSqlSessionFactory")
    public SqlSessionFactory masterSqlSessionFactory(@Qualifier("masterDataSource") DataSource dataSource) throws Exception {
        SqlSessionFactoryBean sqlSessionFactoryBean=new SqlSessionFactoryBean();
        sqlSessionFactoryBean.setDataSource(dataSource);
        //xml位置
        sqlSessionFactoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:/mapper/**/master/*.xml"));
        return sqlSessionFactoryBean.getObject();

    }

    @Bean(name = "masterSqlSessionTemplate")
    public SqlSessionTemplate masterSqlSessionTemplate(@Qualifier("masterSqlSessionFactory") SqlSessionFactory sqlSessionFactory){
        return new SqlSessionTemplate(sqlSessionFactory);
    }
    
    @Bean(name = "MasterTransactionManager")
    public DataSourceTransactionManager transactionManager(@Qualifier("masterDataSource")DataSource dataSource) {
        return new DataSourceTransactionManager(dataSource);
    }
}

三、主要注意点
1)@MapperScan(basePackages = “com.zlc.springcloud.repository.*.coresystem”, sqlSessionFactoryRef = “coreSqlSessionFactory”)
这个是设置Repository所在的位置,代表repository包下的所有coresystem包下的所有文件
在这里插入图片描述
2) @ConfigurationProperties(prefix = “spring.datasource.hikari.core”)
这里是读取application.yml文件中core节点下的所有东西,一定要对应行,如果自己取了别的名字,记得更换一下
3)Mybatis的xml文件位置要配置一下,和自己的对应

 //xml位置
        sqlSessionFactoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:/mapper/**/coresystem/*.xml"));

以上就是最需要注意的地方,移植的时候注意对应上。

四、欢迎大家扫码关注微信公众,您的支持是对我最大的鼓励,扫一下,又损失不了什么。

在这里插入图片描述

springboot+mybatis实现mysqloracle多数据源 在实际项目中很多时候会涉及到多个数据库的访问,或者数据库读分离的形式。下面通过使用 Aspect+注解来实现mysql+oracle多数据源配置(注意:事务一致性未提供)首先要去oracle官网下载ojdbc的jar包,根据oracle的版本去下载,或者在下载的oracle的jdbc包下的lib里面有,然后导入项目中!!!动态数据源流程说明Spring Boot 的动态数据源,本质上是把多个数据源存储在一个 Map 中,当需要使用某个数据源时,从 Map 中获取此数据源进行处理。而在 Spring 中, 阅读详情

相关推荐

SpringBoot 多数据源配置 适用MySQLOracle

1. 配置文件 这里采用yml配置文件 datasource: master: # 数据源1 jdbc-url: jdbc:mysql://192.168.1.8:3306/test_v1.0?useUnicode=true&characterEncoding=UTF-8&&serverTimezone=GMT%2B8 username: developer password: test driver-class-name

sinat_36279113的博客 2358

springboot配置多数据源mysql+oracle

文章目录一、博客地址二 具体配置2.1 配置配置文件2.2 数据源配置2.3 数据源绑定到实体上2.4 jdbc的使用 一、博客地址 二 具体配置 2.1 配置配置文件 //第一数据源 spring.datasource.default.driver-class-name=com.mysql.jdbc.Driver spring.datasource.default.url=jdbc:mysql:...

鸿鹄的博客 5342

OAI数据集申请下载全攻略:从个人NDA账号注册到数据包下载的保姆级避坑指南

本文提供OAI数据集申请下载的完整指南,涵盖从个人NDA账号注册到数据包下载的全流程。重点解析login.gov验证陷阱、浏览器兼容性问题、NDA权限申请技巧及nda-tools高效使用方法,帮助医学影像研究者避开常见技术障碍,快速获取全球骨关节炎研究数据库OAI的宝贵数据资源。

weixin_28698059的博客 607

mysqloracle数据源,SpringBoot配置MySQLOracle多数据源(JdbcTemplate)

SpringBoot配置MySQLOracle多数据源(JdbcTemplate)SpringBoot配置MySQLOracle多数据源(JdbcTemplate)1.在pom.xml里面添加依赖:com.oracleojdbc611.2.0.3com.microsoft.sqlserversqljdbc44.02.如上两个ojdbc6sqljdbc4在maven中央仓库里面是没有 的 所...

weixin_39999536的博客 976

spring boot+mybatis+mysql+oracle多数据源配置(一)

有时候如果我们想要在一个spring boot工程里配置多个数据源的话可以这样配: pom.xml文件(可根据需要进行增删): application.yml文件配置

qq_38679384的博客 539

springboot 配置oraclemysql数据源,使用jdbc连接

1.application.yal文件配置 我使用的是mysql 8.0.18的数据库,目前最新版,注意:加上serverTimezone=UTC&characterEncoding=utf8&useUnicode=true&useSSL=false 新的driver-class-name: com.mysql.cj.jdbc.Driver法 2. p...

qq_39425322的博客 1870

spring boot 切换 oracle mysql_Springboot多数据源配置+AOP动态切换

最近接到一个需求,需要对比一下本地数据库(Hive)与总行数据库(Oracle)中数据是否一致,而关于表名等信息则存储在本地的MySQL数据库中。所以,初步的想法是从MySQL库中获取表名,再分别从Oracle库中hive获取对应表的数据量,对比是否一致。因涉及到三个数据源,所以需先进行多数据源配置。。。1、多数据源配置1.1 yml配置spring: type: com.a...

weixin_34828705的博客 933

mybatis mysqloracle_spring mvc+mybatis+多数据源切换 选取oracle,mysql作为例子切换数据源...

spring mvc+mybatis+多数据源切换 选取oracle,mysql作为例子切换数据源oracle为默认数据源,在测试的action中,进行mysqloracle的动态切换。web.xmlJava代码webAppRootKeytracorg.springframework.web.util.Log4jConfigListenerCharacterEncodingFilteror...

weixin_42292183的博客 280

spring boot集成mybatis配置mysql+oracle数据源

spring boot集成mybatis配置mysql+oracle数据源 最近公司项目需要用到mysqloracle数据库,就是固定的有些接口用mysql,有些接口用oracle。参考了网上很多资源,大致确定了方向实现步骤,最终以github上一个开源实现完成了需求。网址为:https://github.com/djkdeveloper/springboot-mybatis 下面总结一下我的实现步骤 1.application.yml 配置mysqloracle数据源 spring: .

flytalei的博客 2183

简单的用jdbc使spring boot项目同时连接OracleMysql数据源

1.首先在pom.xml中添加依赖//jdbc连接数据库<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jdbc</artifactId></dependency>//第一个数据源mysql<d...

qq_32993549的博客 1万+

SpringBoot + Mybatis集成多种数据库(mysql + oracle)

最近工作中,项目需要切换数据库,但是由于原来数据量比较大,且数据更新频繁,所以计划先采用数据库(mysql + oracle)的方式保证项目正常运行,今天就分享一下Springboot项目如何集成 mysql + oracle 1. 环境准备 引入数据库依赖(可以根据数据库版本选择依赖版本) <dependencies> <!-- jdbc驱动 --> <dependency> <groupId>org.springfram

weixin_44947701的博客 3233

亿级数据迁移 从OracleMysql

目的:此处通过给scsActivityEventMapperscsBaseActivityEventMapper标注不同的数据源,通过DynamicDataSrouce切换数据源OracleMySQL。执行带事务注解saveActivityEventOut方法时会被TransactionInterceptor拦截,此时未调用mapper接口,则获取默认oracle数据源并绑定在当前线程的resources线程变量上并激活当前事务(actualTransactionActive设置true)。

u014374173的博客 1873

SpringBoot集成mybatismysqloracle数据源

SpringBoot集成数据源

txzyb_sjz的博客 2055

SprigBoot OracleMySQL配置文件驱动依赖

SprigBoot OracleMySQL配置文件驱动依赖

qq_54046847的博客 1023

SpringBoot配置连接两个或多个数据库

一、背景 项目中需要从两个不同的数据库查询数据,之前实现方法是:SpringBoot配置连接一个数据源,另一个使用jdbc代码连接。 为了改进,现在使用SpringBoot配置连接两个数据源。 二、实现效果 一个SpringBoot项目,同时连接两个数据库:比如一个是pgsql数据库,一个oracle数据库 (啥数据库都一样,连接两个同为oracle的数据库,或两个不同的数据库,只需要更改对应的driver-class-namejdbc-url等即可) 注意:连接什么数据库,要引入对应数据库的包。 三、

jike11231的博客 1万+

spring如何使一个项目完美兼容多种数据库?

我们都知道有tk.mappermybayis-plus这两个插件,当然还有别的,就是可以自适应数据库来改变xml语法来数据库打交道。但是这些插件处理不了一些数据库中独有的语法与复杂的sql,这样就会有问题,搞程序的我们都知道一个道理,不能完美解决那就是没解决。 如何解决? 1.我们都知道springboot有两个yml文件是可以放在jar包外边的,jar启动时会优先扫描同级目录有没有这两个yml文件,如果有就以外面的为准。 2.我们就通过这两个文件来解决,首先在application.yml中定义

qq_46497604的博客 5380

springboot+mybatisplus多数据源mysql+oracle

部分目录结构 pom依赖 <properties> <mybatis-spring-boot.version>2.1.3</mybatis-spring-boot.version> <hikaricp.version>3.4.5</hikaricp.version> <mybatis-plus.version>3.4.1</mybatis-plus.vers.

如的博客 3335

springcloud适配mysqloracle数据库

mysqloracle数据库部分语法不相同,为了适配两种数据库(修改配置文件方式),可以先操作sql,然后通过代码级别再实现。比如oracle限制返回的条数:rownum

萌兔兔MMQ!! 1119

SpringBoot MyBatis 连接多个数据库(Oracle+MySQL

扯淡 SpringBoot项目结合MyBatis配置数据库(Oracle+MySQL)。第一次尝试也遇到了些坑,稍微整理一下配置的方法遇到过的坑。贴一些代码片段,最后推荐一个很不错的学习资料!!! 代码片段 application.yml DataSource的数据库url需要 jdbc-url 而不是 url ,否则会报一下错误!!! 数据库配置类 添加对应数据库的两个配置文件: ...

qq_33180420的博客 5147

【如何利用扩展卡尔曼滤波解决跟踪毫米波雷达目标】

笛卡尔坐标系(非极坐标系):使用两个垂直的轴(通常是x轴y轴)来确定一个点的位置。你沿着这两个轴移动确定的距离来找到这个点。极坐标系:使用一个角度一个距离来确定一个点的位置。首先,你转到一个特定的方向(角度),然后沿着那个方向移动确定的距离来找到这个点。希望这个例子能帮助你理解两种坐标系的基本概念!

小秋 AI SLAM 入门实战教程 853

自动化伺服电机选型.rar

自动化伺服电机选型.rar

上一篇: Intellij IDEA 设置代理
下一篇: 毕业论文那点小事
喵喵@香菜
博客等级 码龄10年 1万+粉丝 126原创
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

喵喵@香菜

感谢观众老爷送的一发火箭!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值