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);
    }
}
posted @ 2023-10-17 16:09  奕生呀  阅读(1223)  评论(0)    收藏  举报