Oracle与mysql双数据源配置_SpringBoot添加多数据源mysql和oracle

本文介绍了如何在SpringBoot项目中配置Oracle与MySQL双数据源,包括数据源配置类MultiDataSourceConfig,使用SqlSessionTemplate1和SqlSessionTemplate2分别处理MySQL和Oracle的Mapper,以及数据库连接配置。在业务处理层,通过事务@Transactional注解配合不同扫描包实现动态数据源选择。
摘要由CSDN通过智能技术生成

项目结构

ab82d857fa7a8a4d6129c52aa6717a4f.png

多数据源配置文件

MultiDataSourceConfig.java

SqlSessionTemplate1.java

SqlSessionTemplate2.java

packagecom.holytax.accenture_fp_in.datasource;importjavax.sql.DataSource;importorg.springframework.beans.factory.annotation.Qualifier;importorg.springframework.boot.autoconfigure.jdbc.DataSourceBuilder;importorg.springframework.boot.context.properties.ConfigurationProperties;importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.Configuration;importorg.springframework.context.annotation.Primary;/*** 配置多数据源

*

*

**/@Configurationpublic classMultiDataSourceConfig {

@Bean(name= "primaryDataSource")

@Qualifier("primaryDataSource")

@Primary//定义主数据源

@ConfigurationProperties(prefix = "spring.datasource")publicDataSource primaryDataSource() {returnDataSourceBuilder.create().build();

}

@Bean(name= "secondaryDataSource")

@Qualifier("secondaryDataSource")

@ConfigurationProperties(prefix= "custom.datasource.ds1")publicDataSource secondaryDataSource() {returnDataSourceBuilder.create().build();

}

}

packagecom.holytax.accenture_fp_in.datasource;importjavax.sql.DataSource;importorg.apache.ibatis.session.SqlSessionFactory;importorg.mybatis.spring.SqlSessionFactoryBean;importorg.mybatis.spring.SqlSessionTemplate;importorg.mybatis.spring.annotation.MapperScan;importorg.springframework.beans.factory.annotation.Qualifier;importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.Configuration;importorg.springframework.context.annotation.Primary;importorg.springframework.core.io.support.PathMatchingResourcePatternResolver;importorg.springframework.jdbc.datasource.DataSourceTransactionManager;importorg.springframework.transaction.PlatformTransactionManager;/*** spring 整合 mybatis 配置SqlSessionTemplate

*

**/@Configuration

@MapperScan(basePackages= "com.holytax.accenture_fp_in.mapper", sqlSessionTemplateRef = "primarySqlSessionTemplate")public classSqlSessionTemplate1 {

@Bean(name= "primarySqlSessionFactory")

@Primarypublic SqlSessionFactory primarySqlSessionFactory(@Qualifier("primaryDataSource") DataSource dataSource)throwsException {

SqlSessionFactoryBean bean= newSqlSessionFactoryBean();

bean.setDataSource(dataSource);

bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mapper/*.xml"));returnbean.getObject();

}//配置声明式事务管理器

@Bean(name = "primaryTransactionManager")

@Primarypublic PlatformTransactionManager primaryTransactionManager(@Qualifier("primaryDataSource") DataSource dataSource) {return newDataSourceTransactionManager(dataSource);

}

@Bean(name= "primarySqlSessionTemplate")

@PrimarypublicSqlSessionTemplate primarySqlSessionTemplate(

@Qualifier("primarySqlSessionFactory") SqlSessionFactory sqlSessionFactory) throwsException {return newSqlSessionTemplate(sqlSessionFactory);

}

}

packagecom.holytax.accenture_fp_in.datasource;importjavax.sql.DataSource;importorg.apache.ibatis.session.SqlSessionFactory;importorg.mybatis.spring.SqlSessionFactoryBean;importorg.mybatis.spring.SqlSessionTemplate;importorg.mybatis.spring.annotation.MapperScan;importorg.springframework.beans.factory.annotation.Qualifier;importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.Configuration;importorg.springframework.core.io.support.PathMatchingResourcePatternResolver;importorg.springframework.jdbc.datasource.DataSourceTransactionManager;importorg.springframework.transaction.PlatformTransactionManager;

@Configuration

@MapperScan(basePackages= "com.holytax.accenture_fp_in.oracleMapper", sqlSessionTemplateRef = "secondarySqlSessionTemplate")public classSqlSessionTemplate2 {

@Bean(name= "secondarySqlSessionFactory")public SqlSessionFactory secondarySqlSessionFactory(@Qualifier("secondaryDataSource") DataSource dataSource)throwsException {

SqlSessionFactoryBean bean= newSqlSessionFactoryBean();

bean.setDataSource(dataSource);

bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:oracleMapper/*.xml"));returnbean.getObject();

}

@Bean(name= "secondaryTransactionManager")publicPlatformTransactionManager secondaryTransactionManager(

@Qualifier("secondaryDataSource") DataSource dataSource) {return newDataSourceTransactionManager(dataSource);

}

@Bean(name= "secondarySqlSessionTemplate")publicSqlSessionTemplate secondarySqlSessionTemplate(

@Qualifier("secondarySqlSessionFactory") SqlSessionFactory sqlSessionFactory) throwsException {return newSqlSessionTemplate(sqlSessionFactory);

}

}

37f238d5e6da6a46a04550faf07c4878.png

这里是对多数据源,扫描做了处理。mapper 对应Mysql的部分处理 SqlSessionTemplate1.java。oracleMapper 对应oracle的部分处理 SqlSessionTemplate2.java.

就是业务层的Mapper文件,不同数据源扫描不同的包。

2eb350c0ee15b7b265a3f62b1064cd8e.png

2、 数据库application.properties配置文件

#Server

server.port=8081

#MYBATIS

mybatis.configLocation:classpath:mybatis-config.xml

#mybatis.mapper-locations=classpath:mapper/*.xml //注意在单数据时,这配置文件,和springboot启动文件上配置了,扫描路劲,我们要把他干掉。因为我们上边的,

#测试 // SqlSessionTemplate1.java,SqlSessionTemplate2.java.文件已经对这些内容作了处理。

spring.datasource.url=jdbc:mysql://localhost:3306/accenture?useSSL=true

spring.datasource.username=user

spring.datasource.password=pass

spring.datasource.driver-class-name=com.mysql.jdbc.Driver

# 更多数据源

custom.datasource.ds1.driver-class-name=oracle.jdbc.driver.OracleDriver

custom.datasource.ds1.url=jdbc:oracle:thin:@localhost:1521:testdb

custom.datasource.ds1.username=user

custom.datasource.ds1.password=pass

spring.datasource.initialSize=5

spring.datasource.minIdle=5

spring.datasource.maxActive=20

spring.datasource.maxWait=60000

spring.datasource.timeBetweenEvictionRunsMillis=60000

spring.datasource.validationQuery=SELECT 1

spring.datasource.testWhileIdle=true

spring.datasource.testOnBorrow=false

spring.datasource.testOnReturn=false

spring.datasource.poolPreparedStatements=true

spring.datasource.maxPoolPreparedStatementPerConnectionSize=20

spring.datasource.filters=stat

spring.datasource.connectionProperties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000

#url params

spring.holytax.interface-url=http://localohst:8080/hltypt/api/callservice.do

spring.holytax.interface-company=accenture

3、services 业务处理层

只需要在,方法加上事务@Transactional,因为我们,配置的不同的扫描包,,就相当动态在方法上指定数据源,只不过,,我们这里作了固定的区分。

43a3493626e70ec188592adbb2b90b0d.png

4、pom.xml 文件  添加对于数据库的驱动支持,

mysql

mysql-connector-java

5.1.35

//如果maven仓库没有,下载导入本地maven仓库

com.oracle

ojdbc14

10.2.0.5.0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值