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属性)。在这种情况下,您必须重写您的配置。