部分参考此资源:https://blog.csdn.net/tuesdayma/article/details/81081666
1,首先,再application.yml文件中,增加如下配置
#数据源配置
spring:
datasource:
#USS数据源
primary:
driver-class-name: oracle.jdbc.OracleDriver
jdbc-url: jdbc:oracle:thin:@127.0.0.1:1521:orcl
username: uss
password: 1314
max-idle: 30
max-wait: 10000
min-idle: 5
initial-size: 5
validation-query: SELECT 1
# M7数据源
secondary:
driver-class-name: oracle.jdbc.OracleDriver
jdbc-url: jdbc:oracle:thin:@127.0.0.1:1521:songshan
username: m7
password: 1314
max-idle: 30
max-wait: 10000
min-idle: 5
initial-size: 5
validation-query: SELECT 1
2,配置文件配置好了之后,创建两个初始化数据源的配置类
primary 配置类
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 javax.sql.DataSource;
//表示这个类为一个配置类
@Configuration
// 配置mybatis的接口类放的地方
@MapperScan(basePackages = "com.web.moshao.mapper.uss", sqlSessionFactoryRef = "ussSqlSessionFactory")
public class PrimaryDataSourceConfigure {
// 将这个对象放入Spring容器中
@Bean(name = "ussDataSource")
// 表示这个数据源是默认数据源
@Primary
// 读取application.yml中的配置参数映射成为一个对象
// prefix表示参数的前缀
@ConfigurationProperties(prefix = "spring.datasource.primary")
public DataSource getDateSource1() {
return DataSourceBuilder.create().build();
}
@Bean(name = "ussSqlSessionFactory")
// 表示这个数据源是默认数据源
@Primary
// @Qualifier表示查找Spring容器中名字为ussDataSource的对象
public SqlSessionFactory ussSqlSessionFactory(@Qualifier("ussDataSource") DataSource datasource)
throws Exception {
SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
bean.setDataSource(datasource);
bean.setMapperLocations(
// 设置mybatis的xml所在位置
new PathMatchingResourcePatternResolver().getResources("classpath*:mapper/uss/*.xml"));
return bean.getObject();
}
@Bean("ussSqlSessionTemplate")
// 表示这个数据源是默认数据源
@Primary
public SqlSessionTemplate ussSqlSessionTemplate(
@Qualifier("ussSqlSessionFactory") SqlSessionFactory sessionfactory) {
return new SqlSessionTemplate(sessionfactory);
}
}
secondary:配置类
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.web.moshao.mapper.m7", sqlSessionFactoryRef = "m7SqlSessionFactory")
public class SecondaryDataSourceConfigure {
@Bean(name = "m7DataSource")
@ConfigurationProperties(prefix = "spring.datasource.secondary")
public DataSource getDateSource2() {
return DataSourceBuilder.create().build();
}
@Bean(name = "m7SqlSessionFactory")
public SqlSessionFactory m7SqlSessionFactory(@Qualifier("m7DataSource") DataSource datasource)
throws Exception {
SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
bean.setDataSource(datasource);
bean.setMapperLocations(
new PathMatchingResourcePatternResolver().getResources("classpath*:mapper/m7/*.xml"));
return bean.getObject();
}
@Bean("m7SqlSessionTemplate")
public SqlSessionTemplate m7SqlSessionTemplate(
@Qualifier("m7SqlSessionFactory") SqlSessionFactory sessionfactory) {
return new SqlSessionTemplate(sessionfactory);
}
}
此时,多数据源就配置好了,看似简单,但是其中的辛酸还是有的,需要自己去琢磨,思考。