mysql sqlserver 配置文件_SpringBoot-多数据源配置-Mysql-SqlServer-Oracle

本文介绍了如何在SpringBoot应用中配置多数据源,包括MySQL和SQLServer。详细讲解了Maven依赖、application.yml配置以及各自的配置类,强调了jdbc-url字段的重要性,避免了'jdbcUrl is required with driverClassName'的错误。
摘要由CSDN通过智能技术生成

Maven依赖

mysql

mysql-connector-java

8.0.16

com.microsoft.sqlserver

mssql-jdbc

7.4.1.jre8

application.yml配置

注意是jdbc-url不是url,否则报jdbcUrl is required with driverClassName错误

spring:

application:

name: demo-multi-datasource

datasource:

mysql:

jdbc-url: jdbc:mysql://localhost:3306/demo?characterEncoding=utf-8&useSSL=false&serverTimezone=UTC&nullCatalogMeansCurrent=true

username: root

password: root

driver-class-name: com.mysql.cj.jdbc.Driver

datasource:

jdbc-url: jdbc:sqlserver://localhost:1433;databasename=demo

username: sa

password: sa

driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver

mysql配置类

其中com.htkm.demo.mysql.dao是DAO层,

com/htkm/demo/mysql/mapping/dao/是映射文件目录

packagecom.htkm.demo.mysql.config;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.boot.context.properties.ConfigurationProperties;importorg.springframework.boot.jdbc.DataSourceBuilder;importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.Configuration;importorg.springframework.core.io.support.PathMatchingResourcePatternResolver;importorg.springframework.jdbc.datasource.DataSourceTransactionManager;importjavax.sql.DataSource;/***@authorviwofer

* @created 2019-12-25 21:44*/@Configuration(value="mysql")

@MapperScan(basePackages= "com.htkm.demo.mysql.dao", sqlSessionFactoryRef = "MysqlSqlSessionFactory")public classDataSourceConfig {

@Bean(name= "MysqlDataSource")

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

}/*** 配置事务管理*/@Bean(name= "MysqlTransactionManager")public DataSourceTransactionManager testTransactionManager(@Qualifier("MysqlDataSource") DataSource dataSource) {return newDataSourceTransactionManager(dataSource);

}/*** 配置工厂

*@paramdatasource

*@return*@throwsException*/@Bean(name= "MysqlSqlSessionFactory")public SqlSessionFactory testSqlSessionFactory(@Qualifier("MysqlDataSource") DataSource datasource)throwsException {

SqlSessionFactoryBean bean= newSqlSessionFactoryBean();

bean.setDataSource(datasource);

bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath*:com/htkm/demo/mysql/mapping/dao/*.xml"));returnbean.getObject();

}/*** 配置会话

*@paramsessionfactory

*@return

*/@Bean("MysqlSqlSessionTemplate")publicSqlSessionTemplate testsqlsessiontemplate(

@Qualifier("MysqlSqlSessionFactory") SqlSessionFactory sessionfactory) {return newSqlSessionTemplate(sessionfactory);

}

}

mssql配置类

其中com.htkm.demo.mssql.dao是DAO层,

com/htkm/demo/mssql/mapping/dao/是映射文件目录

packagecom.htkm.demo.mssql.config;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.boot.context.properties.ConfigurationProperties;importorg.springframework.boot.jdbc.DataSourceBuilder;importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.Configuration;importorg.springframework.core.io.support.PathMatchingResourcePatternResolver;importorg.springframework.jdbc.datasource.DataSourceTransactionManager;importjavax.sql.DataSource;/***@authorviwofer

* @created 2019-12-25 21:44*/@Configuration(value= "mssql")

@MapperScan(basePackages= "com.htkm.demo.mssql.dao", sqlSessionFactoryRef = "MssqlSqlSessionFactory")public classDataSourceConfig {/*** 配置数据源

*@return

*/@Bean(name= "MssqlDataSource")

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

}/*** 配置事务管理*/@Bean(name= "MssqlTransactionManager")public DataSourceTransactionManager testTransactionManager(@Qualifier("MssqlDataSource") DataSource dataSource) {return newDataSourceTransactionManager(dataSource);

}/*** 配置工厂

*@paramdatasource

*@return*@throwsException*/@Bean(name= "MssqlSqlSessionFactory")public SqlSessionFactory testSqlSessionFactory(@Qualifier("MssqlDataSource") DataSource datasource)throwsException {

SqlSessionFactoryBean bean= newSqlSessionFactoryBean();

bean.setDataSource(datasource);

bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath*:com/htkm/demo/mssql/mapping/dao/*.xml"));returnbean.getObject();

}/*** 配置会话

*@paramsessionfactory

*@return

*/@Bean("MssqlSqlSessionTemplate")publicSqlSessionTemplate testsqlsessiontemplate(

@Qualifier("MssqlSqlSessionFactory") SqlSessionFactory sessionfactory) {return newSqlSessionTemplate(sessionfactory);

}

}

Oracle配置

首先要得到Oracle JDBC Driver

1.通过Oracle官方网站下载相应版本:

2.通过Oracle的安装目录获得,位置在“{ORACLE_HOME}\jdbc\lib\ojdbc14.jar”

手动安装安装

命令如下:

mvn install:install-file -Dfile={Path/to/your/ojdbc.jar} -DgroupId=com.oracle -DartifactId=ojdbc6 -Dversion=11.2.0 -Dpackaging=jar

pom.xml添加依赖

com.oracle

ojdbc8

11.2.0.4.0

cn.easyproject

orai18n

12.1.0.2.0

application.ym配置

spring.datasource.url=jdbc:oracle:thin:@localhost:1521:data

spring.datasource.username=xxx

spring.datasource.password=xxx

spring.datasource.driver-class-name=oracle.jdbc.driver.OracleDriver

jdbcUrl is required with driverClassName

错误:Cause: java.lang.IllegalArgumentException: jdbcUrl is required with driverClassName.

application.yml:

spring:

application:

name: demo-multi-datasource

datasource:

mysql:

url: jdbc:mysql://localhost:3306/demo?characterEncoding=utf-8&useSSL=false&serverTimezone=UTC&nullCatalogMeansCurrent=true

username: root

password: root

driver-class-name: com.mysql.cj.jdbc.Driver

datasource:

url: jdbc:sqlserver://localhost:1433;databasename=demo

username: sa

password: sa

driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver

将url更改为jdbc-url

spring:

application:

name: demo-multi-datasource

datasource:

mysql:

jdbc-url: jdbc:mysql://localhost:3306/demo?characterEncoding=utf-8&useSSL=false&serverTimezone=UTC&nullCatalogMeansCurrent=true

username: root

password: root

driver-class-name: com.mysql.cj.jdbc.Driver

datasource:

jdbc-url: jdbc:sqlserver://localhost:1433;databasename=demo

username: sa

password: sa

driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver

spring.datasource.url 数据库的 JDBC URL。

spring.datasource.jdbc-url 用来重写自定义连接池

官方文档的解释是:

因为连接池的实际类型没有被公开,所以在您的自定义数据源的元数据中没有生成密钥,而且在IDE中没有完成(因为DataSource接口没有暴露属性)。另外,如果您碰巧在类路径上有Hikari,那么这个基本设置就不起作用了,因为Hikari没有url属性(但是确实有一个jdbcUrl属性)。在这种情况下,您必须重写您的配置。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值