spring boot 项目多数据源的创建:
第一步:搭建 spring boot 工程,在这里使用的是 idea 这个软件,
首先:搭建一个 waven 工程
其次:创建完 maven 工程之后,需要将其转换为 spring boot 工程,在 pom.xml 文件中引入对应的 springboot 工程的包,
我这里的是 MAVEN 的聚合工程,大家只需关心 springboot 所需要的包即可。
最后:创建 springboot 的启动类
第二步:由于业务需求需要三个数据源
需要配置三个数据源的配置类,
HisDsConfig,PeisSqlConfig,RisDsConfig
这三个配置类,都精确到 mapper 目录,以便跟其他数据源隔离
HisDsConfig:
package com.jfsoft.conf;
import com.alibaba.druid.pool.DruidDataSource;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
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 = HisDsConfig.PACKAGE, sqlSessionFactoryRef = "hisSqlSessionFactory")
public class HisDsConfig {
static final String PACKAGE = "com.jfsoft.dao.view.his";
static final String MAPPER_LOCATION = "com.jfsoft.dao.view.his.*.xml";
@Value("${spring.datasource.his.url}")
private String url;
@Value("${spring.datasource.his.username}")
private String user;
@Value("${spring.datasource.his.password}")
private String password;
@Value("${spring.datasource.his.driver-class-name}")
private String driverClass;
@Bean(name = "hisDataSource")
@Qualifier
public DataSource hisDataSource() {
DruidDataSource dataSource = new DruidDataSource();
dataSource.setDriverClassName(driverClass);
dataSource.setUrl(url);
dataSource.setUsername(user);
dataSource.setPassword(password);
return dataSource;
}
@Bean(name = "hisTransactionManager")
@Qualifier
public DataSourceTransactionManager hisTransactionManager() {
return new DataSourceTransactionManager(hisDataSource());
}
@Bean(name = "hisSqlSessionFactory")
@Qualifier
public SqlSessionFactory hisSqlSessionFactory(@Qualifier("hisDataSource") DataSource hisDataSource)
throws Exception {
final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
sessionFactory.setDataSource(hisDataSource);
sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver()
.getResources(HisDsConfig.MAPPER_LOCATION));
return sessionFactory.getObject();
}
}
PeisSqlConfig:
package com.jfsoft.conf;
import com.alibaba.druid.pool.DruidDataSource;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
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 = PeisSqlConfig.PACKAGE, sqlSessionFactoryRef = "peisSqlSessionFactory")
public class PeisSqlConfig {
static final String PACKAGE = "com.jfsoft.dao.view.peis";
static final String MAPPER_LOCATION = "com.jfsoft.dao.view.peis.*.xml";
@Value("${spring.datasource.peis.url}")
private String url;
@Value("${spring.datasource.peis.username}")
private String user;
@Value("${spring.datasource.peis.password}")
private String password;
@Value("${spring.datasource.peis.driver-class-name}")
private String driverClass;
@Bean(name = "peisDataSource")
@Qualifier
public DataSource peisDataSource() {
DruidDataSource dataSource = new DruidDataSource();
dataSource.setDriverClassName(driverClass);
dataSource.setUrl(url);
dataSource.setUsername(user);
dataSource.setPassword(password);
return dataSource;
}
@Bean(name = "peisTransactionManager")
@Qualifier
public DataSourceTransactionManager peisTransactionManager() {
return new DataSourceTransactionManager(peisDataSource());
}
@Bean(name = "peisSqlSessionFactory")
@Qualifier
public SqlSessionFactory peisSqlSessionFactory(@Qualifier("peisDataSource") DataSource peisDataSource)
throws Exception {
final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
sessionFactory.setDataSource(peisDataSource);
sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver()
.getResources(PeisSqlConfig.MAPPER_LOCATION));
return sessionFactory.getObject();
}
}
RisDsConfig:
package com.jfsoft.conf;
import com.alibaba.druid.pool.DruidDataSource;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
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 = HisDsConfig.PACKAGE, sqlSessionFactoryRef = "hisSqlSessionFactory")
public class HisDsConfig {
static final String PACKAGE = "com.jfsoft.dao.view.his";
static final String MAPPER_LOCATION = "com.jfsoft.dao.view.his.*.xml";
@Value("${spring.datasource.his.url}")
private String url;
@Value("${spring.datasource.his.username}")
private String user;
@Value("${spring.datasource.his.password}")
private String password;
@Value("${spring.datasource.his.driver-class-name}")
private String driverClass;
@Bean(name = "hisDataSource")
@Qualifier
public DataSource hisDataSource() {
DruidDataSource dataSource = new DruidDataSource();
dataSource.setDriverClassName(driverClass);
dataSource.setUrl(url);
dataSource.setUsername(user);
dataSource.setPassword(password);
return dataSource;
}
@Bean(name = "hisTransactionManager")
@Qualifier
public DataSourceTransactionManager hisTransactionManager() {
return new DataSourceTransactionManager(hisDataSource());
}
@Bean(name = "hisSqlSessionFactory")
@Qualifier
public SqlSessionFactory hisSqlSessionFactory(@Qualifier("hisDataSource") DataSource hisDataSource)
throws Exception {
final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
sessionFactory.setDataSource(hisDataSource);
sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver()
.getResources(HisDsConfig.MAPPER_LOCATION));
return sessionFactory.getObject();
}
}
在 application.yml 配置文件中配置三个数据源
spring:
datasource:
ris:
url: jdbc:oracle:thin:@10.0.2.200:1521:orcl
driver-class-name: oracle.jdbc.driver.OracleDriver
username: ris
password: 123456
peis:
url: jdbc:sqlserver://localhost:1433;DatabaseName=xxxxx
driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
username: ris
password: 123456
his:
url: jdbc:oracle:thin:@10.0.2.70:1521:orcl
driver-class-name: oracle.jdbc.driver.OracleDriver
username: ris
password: 123456
第三步:测试结果
将 his 数据源中的内容,插入到 ris 数据库中。测试成功!
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于