新建一个config包,,里面创建一个OracleConfig类
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 org.springframework.jdbc.datasource.DataSourceTransactionManager;
import javax.sql.DataSource;
@Configuration
@MapperScan(basePackages = "com.qc.bs_ks.mapper", sqlSessionFactoryRef = "OracleSqlSessionFactory")
public class OracleConfig {
@Primary
@Bean(name = "OracleDataSource")
@ConfigurationProperties(prefix = "spring.datasource.primary")
public DataSource oracleDataSource() {
return DataSourceBuilder.create().build();
}
@Primary
@Bean(name = "OracleSqlSessionFactory")
public SqlSessionFactory oracleSqlSessionFactory(@Qualifier("OracleDataSource") DataSource dataSource) throws Exception {
SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
bean.setDataSource(dataSource);
bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mapper/*.xml"));
return bean.getObject();
}
@Primary
@Bean(name = "OracleTransactionManager")
public DataSourceTransactionManager oracleTransactionManager(@Qualifier("OracleDataSource") DataSource dataSource) {
return new DataSourceTransactionManager(dataSource);
}
@Primary
@Bean(name = "OracleSqlSessionTemplate")
public SqlSessionTemplate oracleSqlSessionTemplate(@Qualifier("OracleSqlSessionFactory") SqlSessionFactory sqlSessionFactory) throws Exception {
return new SqlSessionTemplate(sqlSessionFactory);
}
}
其中@Primary是用来区分主从数据源的
@MapperScan(basePackages = "填写创建的mapper的位置")
再创建第二个数据源OracleConfig1
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 org.springframework.jdbc.datasource.DataSourceTransactionManager;
import javax.sql.DataSource;
@Configuration
@MapperScan(basePackages = "com.qc.bs_ks.troubleshoot.mapper", sqlSessionFactoryRef = "OracleSqlSessionFactory1")
public class OracleConfig1 {
@Bean(name = "OracleDataSource1")
@ConfigurationProperties(prefix = "spring.datasource.secondary")
public DataSource oracleDataSource() {
return DataSourceBuilder.create().build();
}
@Bean(name = "OracleSqlSessionFactory1")
public SqlSessionFactory oracleSqlSessionFactory(@Qualifier("OracleDataSource1") DataSource dataSource) throws Exception {
SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
bean.setDataSource(dataSource);
bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:troubleshoot/mapper/*.xml"));
return bean.getObject();
}
@Bean(name = "OracleTransactionManager1")
public DataSourceTransactionManager oracleTransactionManager(@Qualifier("OracleDataSource1") DataSource dataSource) {
return new DataSourceTransactionManager(dataSource);
}
@Bean(name = "OracleSqlSessionTemplate1")
public SqlSessionTemplate oracleSqlSessionTemplate(@Qualifier("OracleSqlSessionFactory1") SqlSessionFactory sqlSessionFactory) throws Exception {
return new SqlSessionTemplate(sqlSessionFactory);
}
}
这个可以不用加@Primary
下面getResources("填写的是第二个mapper的位置")
@Bean(name = "OracleSqlSessionFactory1")
public SqlSessionFactory oracleSqlSessionFactory(@Qualifier("OracleDataSource1") DataSource dataSource) throws Exception {
SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
bean.setDataSource(dataSource);
bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:troubleshoot/mapper/*.xml"));
return bean.getObject();
}
接下来在application.properties文件里配置数据源
1.第一个数据源
spring.datasource.primary.driver-class-name=oracle.jdbc.OracleDriver
spring.datasource.primary.jdbc-url=jdbc:oracle:thin:@ip:端口号:orcl
spring.datasource.primary.username=用户名
spring.datasource.primary.password=密码2.第二个数据源
spring.datasource.secondary.driver-class-name=oracle.jdbc.OracleDriver
spring.datasource.secondary.jdbc-url=jdbc:oracle:thin:@ip:端口号:orcl
spring.datasource.secondary.username=用户名
spring.datasource.secondary.password=密码其中spring.datasource后面跟的那个单词可以随便起,,,,,,只要跟config配置类中
@ConfigurationProperties(prefix = "spring.datasource.secondary")
一样就行