SpringBoot如何使用双数据源
1、在Spring Boot应用的配置文件(application.properties或application.yml)中添加数据库连接配置。如果配置文件中已经存在数据库配置,可以直接修改现有配置,或者添加一个新的数据库配置。
例如,下面是在application.yml中添加MySQL数据库配置的示例:
spring:
datasource:
#数据库1的配置
ds1:
driver-class-name: com.mysql.cj.jdbc.Driver
jdbc-url: jdbc:mysql://localhost:3306/szy?useSSL=false&serverTimezone=UTC&characterEncoding=UTF-8
username: root
password: root
#数据库2的配置
ds2:
driver-class-name: com.mysql.cj.jdbc.Driver
jdbc-url: jdbc:mysql://localhost:3306/zhj?useSSL=false&serverTimezone=UTC&characterEncoding=UTF-8
username: root
password: root
2、添加数据库依赖。如果你在项目的构建工具(如Maven或Gradle)中已经添加了相应的数据库依赖,可以直接跳过此步骤。否则,你需要在构建工具中添加数据库的驱动依赖。以Maven为例,在pom.xml文件中添加MySQL依赖。
<dependencies>
<!-- 其他依赖 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.26</version>
</dependency>
</dependencies>
3、添加两个数据的配置(配置中会指定使用数据库包的位置)
@Configuration
//com.szyzhj.ds1.mapper指定数据库1的包的位置
@MapperScan(basePackages = "com.szyzhj.ds1.mapper", sqlSessionTemplateRef = "ds1SqlSessionTemplate")
public class DS1DataSourceConfig {
@Primary
@Bean(name = "ds1DataSource")
@ConfigurationProperties(prefix = "spring.datasource.ds1")
public DataSource ds1DataSource() {
return DataSourceBuilder.create().build();
}
@Primary
@Bean(name = "ds1SqlSessionFactory")
public SqlSessionFactory ds1SqlSessionFactory(@Qualifier("ds1DataSource") DataSource dataSource) throws Exception {
MybatisSqlSessionFactoryBean bean = new MybatisSqlSessionFactoryBean();
bean.setDataSource(dataSource);
return bean.getObject();
}
@Primary
@Bean(name = "ds1SqlSessionTemplate")
public SqlSessionTemplate ds1SqlSessionTemplate(@Qualifier("ds1SqlSessionFactory") SqlSessionFactory sqlSessionFactory) {
return new SqlSessionTemplate(sqlSessionFactory);
}
}
@Configuration
//com.szyzhj.ds2.mapper指定数据库2的包的位置
@MapperScan(basePackages = "com.szyzhj.ds2.mapper", sqlSessionTemplateRef = "ds2SqlSessionTemplate")
public class DS2DataSourceConfig {
@Bean(name = "ds2DataSource")
@ConfigurationProperties(prefix = "spring.datasource.ds2")
public DataSource ds2DataSource() {
return DataSourceBuilder.create().build();
}
@Bean(name = "ds2SqlSessionFactory")
public SqlSessionFactory ds2SqlSessionFactory(@Qualifier("ds2DataSource") DataSource dataSource) throws Exception {
MybatisSqlSessionFactoryBean bean = new MybatisSqlSessionFactoryBean();
bean.setDataSource(dataSource);
return bean.getObject();
}
@Bean(name = "ds2SqlSessionTemplate")
public SqlSessionTemplate ds2SqlSessionTemplate(@Qualifier("ds2SqlSessionFactory") SqlSessionFactory sqlSessionFactory) {
return new SqlSessionTemplate(sqlSessionFactory);
}
}

浙公网安备 33010602011771号