欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

springboot項(xiàng)目如何配置多數(shù)據(jù)源

 更新時(shí)間:2025年03月04日 09:02:34   作者:L丶小先生  
本文介紹了如何在SpringBoot項(xiàng)目中配置多數(shù)據(jù)源,包括配置多個(gè)數(shù)據(jù)源、創(chuàng)建數(shù)據(jù)源配置類(lèi)、配置事務(wù)管理器以及使用不同的Mapper,從而實(shí)現(xiàn)跨數(shù)據(jù)庫(kù)操作

springboot項(xiàng)目配置多數(shù)據(jù)源

1. 配置多個(gè)數(shù)據(jù)源

首先,你需要在application.yml或application.properties中配置多個(gè)數(shù)據(jù)源。

例如:

spring:
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    one:
      driver-class-name: com.mysql.cj.jdbc.Driver
      url: jdbc:mysql://localhost:3306/db1?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
      username: xxs
      password: 123456
    two:
      driver-class-name: com.mysql.cj.jdbc.Driver
      url: jdbc:mysql://localhost:3306/db2?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
      username: xxs
      password: 123456

2. 創(chuàng)建數(shù)據(jù)源配置類(lèi)

對(duì)于每個(gè)數(shù)據(jù)源,你需要?jiǎng)?chuàng)建一個(gè)配置類(lèi)來(lái)定義DataSource、SqlSessionFactory和MapperScan。

例如:

@Configuration
@MapperScan(basePackages = "com.xxs.mapper.db1", sqlSessionFactoryRef = "db1SqlSessionFactory")
public class DataSourceOneConfig {

    @Bean(name = "db1DataSource")
    @ConfigurationProperties(prefix = "spring.datasource.one")
    public DataSource db1DataSource() {
        return DataSourceBuilder.create().build();
    }

    @Bean(name = "db1SqlSessionFactory")
    public SqlSessionFactory db1SqlSessionFactory(@Qualifier("db1DataSource") DataSource dataSource) throws Exception {
        SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
        sessionFactory.setDataSource(dataSource);
        sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mapper/db1/*.xml"));
        return sessionFactory.getObject();
    }
}

對(duì)于第二個(gè)數(shù)據(jù)源,創(chuàng)建另一個(gè)配置類(lèi):

@Configuration
@MapperScan(basePackages = "com.xxs.mapper.db2", sqlSessionFactoryRef = "db2SqlSessionFactory")
public class DataSourceTwoConfig {

    @Bean(name = "db2DataSource")
    @ConfigurationProperties(prefix = "spring.datasource.two")
    public DataSource db2DataSource() {
        return DataSourceBuilder.create().build();
    }

    @Bean(name = "db2SqlSessionFactory")
    public SqlSessionFactory db2SqlSessionFactory(@Qualifier("db2DataSource") DataSource dataSource) throws Exception {
        SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
        sessionFactory.setDataSource(dataSource);
        sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mapper/db2/*.xml"));
        return sessionFactory.getObject();
    }
}

3. 配置事務(wù)管理器

對(duì)于每個(gè)數(shù)據(jù)源,你還需要配置相應(yīng)的事務(wù)管理器:

@Bean(name = "db1TransactionManager")
public DataSourceTransactionManager db1TransactionManager(@Qualifier("db1DataSource") DataSource dataSource) {
    return new DataSourceTransactionManager(dataSource);
}

@Bean(name = "db2TransactionManager")
public DataSourceTransactionManager db2TransactionManager(@Qualifier("db2DataSource") DataSource dataSource) {
    return new DataSourceTransactionManager(dataSource);
}

4. 使用不同的Mapper

現(xiàn)在你可以在不同的包路徑下創(chuàng)建對(duì)應(yīng)的Mapper接口,并在對(duì)應(yīng)的Mapper XML文件中編寫(xiě)SQL語(yǔ)句。

例如,com.xxs.mapper.db1包下的Mapper接口將使用第一個(gè)數(shù)據(jù)源,而com.xxs.mapper.db2包下的Mapper接口將使用第二個(gè)數(shù)據(jù)源。

這樣,你就可以在Spring Boot項(xiàng)目中配置不同數(shù)據(jù)庫(kù)的Mapper,并實(shí)現(xiàn)跨數(shù)據(jù)庫(kù)操作了。

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論