application.yml配置文件:
spring:
datasource:
master:
url: jdbc:mysql://host:port/dataSource?serverTimezone=GMT%2b8
username: user
password: pwd
driver-class-name: com.mysql.cj.jdbc.Driver
maxActive: 20
initialSize: 1
maxWait: 60000
minIdle: 1
timeBeteenEvictionRunsMillis: 60000
minEvictableIdelTimeMillis: 300000
second:
platform: oracle
driver-class-name: oracle.jdbc.driver.OracleDriver
url: jdbc:oracle:thin:@host:port/htjcoracle
username: user
password: pwd
maxActive: 20
initialSize: 1
maxWait: 60000
minIdle: 1
timeBeteenEvictionRunsMillis: 60000
minEvictableIdelTimeMillis: 300000
启动类:
package com.sgcc;
import org.mybatis.spring.boot.autoconfigure.MybatisAutoConfiguration;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConfiguration;
/**
-
微服务应用服务启动类
-
1、(@EnableDiscoveryClient)注解为链接微服务注册中心用,如实际环境中使用注册中心,请取消注释部分,
-
与配置文件中相关注册中心配置信息结合使用。
-
@author zhangzz
*/
@EnableAutoConfiguration(exclude = {DataSourceAutoConfiguration.class, DataSourceTransactionManagerAutoConfiguration.class, MybatisAutoConfiguration.class})
@SpringBootApplication(scanBasePackages = {“com.sgcc”, “com.sgcc.uap.rest.annotation”, “com.sgcc.uap.mdd.runtime”})
public class Application {public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
数据源配置类:
1第一数据源(主数据源)
package cn.com.esgcc.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.boot.autoconfigure.jdbc.DataSourceBuilder;
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 org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import javax.sql.DataSource;
/**
-
@author chezhenqi
-
@date 2019/6/27 星期四
-
@time 9:51
-
@description xakjg
*/
@Configuration
@MapperScan(basePackages = “cn.com.esgcc.mapper”, sqlSessionTemplateRef = “masterSqlSessionTemplate”)
public class MasterDataSourceConfig {
@Primary
@Bean(name = “masterDataSource”)
@ConfigurationProperties(“spring.datasource.master”)
public DataSource masterDataSource() {
return DataSourceBuilder.create().build();
}@Bean(name = “masterSqlSessionFactory”)
public SqlSessionFactory masterSqlSessionFactory(@Qualifier(“masterDataSource”) DataSource dataSource) throws Exception {
SqlSessionFactoryBean sessionFactoryBean = new SqlSessionFactoryBean();
sessionFactoryBean.setDataSource(dataSource);
sessionFactoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources(“classpath:mybatis/mapper/*.xml”));
return sessionFactoryBean.getObject();
}@Bean(name = “masterSqlSessionTemplate”)
public SqlSessionTemplate masterSqlSessionTemplate(@Qualifier(“masterSqlSessionFactory”) SqlSessionFactory sqlSessionFactory) {
return new SqlSessionTemplate(sqlSessionFactory);
}
}
2第二数据源
package cn.com.esgcc.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.boot.autoconfigure.jdbc.DataSourceBuilder;
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 org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import javax.sql.DataSource;
/**
-
@author chezhenqi
-
@date 2019/6/27 星期四
-
@time 9:51
-
@description xakjg
*/
@Configuration
@MapperScan(basePackages = “cn.com.esgcc.second”, sqlSessionTemplateRef = “secondSqlSessionTemplate”)
public class SecondDataSourceConfig {
@Bean(name = “secondDataSource”)
@ConfigurationProperties(“spring.datasource.second”)
public DataSource masterDataSource() {
return DataSourceBuilder.create().build();
}@Bean(name = “secondSqlSessionFactory”)
public SqlSessionFactory secondSqlSessionFactory(@Qualifier(“secondDataSource”) DataSource dataSource) throws Exception {
SqlSessionFactoryBean sessionFactoryBean = new SqlSessionFactoryBean();
sessionFactoryBean.setDataSource(dataSource);
sessionFactoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources(“classpath:mybatis/second/*.xml”));
return sessionFactoryBean.getObject();
}@Bean(name = “secondSqlSessionTemplate”)
public SqlSessionTemplate secondSqlSessionTemplate(@Qualifier(“secondSqlSessionFactory”) SqlSessionFactory sqlSessionFactory) {
return new SqlSessionTemplate(sqlSessionFactory);
}
}
注意事项:
1.mybatis的classpath下必须有文件,否则会报错。
2.@Primary注解只能在一个数据源(主数据源)中使用,否则会报错。
3.数据源配置类中注入的bean是配套的,需要注意一下。