MybatisPlus を使用して複数のデータ ソースを構成する方法

1. 需要

最初は 1 つの環境でのみ mysql データベース データをクエリしていたと仮定すると、これから変換する場合、複数の環境での mysql データベース データのクエリをどのようにサポートできるでしょうか?

2つ目は、準備すべき環境

2 台の mysql データベース サーバー:
ホスト 1: 192.168.25.134
ホスト 2: 192.168.25.166

3. 設定ファイルの変更

application.properties の内容を変更します。複数のデータベースの構成名は一意である必要があります。

#三套环境
spring.datasource.api3.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.api3.sql-script-encoding=utf-8
spring.datasource.api3.url=jdbc:mysql://192.168.25.134:3306/api?allowMultiQueries=true&useUnicode=true&characterEncoding=utf-8&useSSL=false
spring.datasource.api3.username=api
spring.datasource.api3.password=apiapi
#四套环境
spring.datasource.api4.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.api4.sql-script-encoding=utf-8
spring.datasource.api4.url=jdbc:mysql://192.168.25.166:3306/api?allowMultiQueries=true&useUnicode=true&characterEncoding=utf-8&useSSL=false
spring.datasource.api4.username=api
spring.datasource.api4.password=apiapi

4. 設定コードの変更

コードで複数のデータ ソースを構成する

@Configuration
public class DataSourceConfig {
    
    

    @Bean
    @ConfigurationProperties(prefix = "spring.datasource.api3")
    public DataSource dataSource2() {
    
    
        return DataSourceBuilder.create().build();
    }
    @Bean
    @ConfigurationProperties(prefix = "spring.datasource.api4")
    public DataSource dataSource3() {
    
    
        return DataSourceBuilder.create().build();
    }
}

複数のデータソースに対応するBeanオブジェクトを作成する

@Configuration
@MapperScan(basePackages = "com.icbc.ndf.jft.manager.mapper3", sqlSessionFactoryRef = "sqlSessionFactory2")
public class MyBatisConfig2 {
    
    
    @Autowired
    @Qualifier("dataSource2")
    private DataSource dataSource2;
    @Bean
    public SqlSessionFactory sqlSessionFactory2() throws Exception {
    
    
        SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
        factoryBean.setDataSource(dataSource2);
        return factoryBean.getObject();
    }
    @Bean
    public SqlSessionTemplate sqlSessionTemplate2() throws Exception {
    
    
        return new SqlSessionTemplate(sqlSessionFactory2());
    }
}
@Configuration
@MapperScan(basePackages = "com.icbc.ndf.jft.manager.mapper4", sqlSessionFactoryRef = "sqlSessionFactory3")
public class MyBatisConfig3 {
    
    
    @Autowired
    @Qualifier("dataSource3")
    private DataSource dataSource3;
    @Bean
    public SqlSessionFactory sqlSessionFactory3() throws Exception {
    
    
        SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
        factoryBean.setDataSource(dataSource3);
        return factoryBean.getObject();
    }
    @Bean
    public SqlSessionTemplate sqlSessionTemplate3() throws Exception {
    
    
        return new SqlSessionTemplate(sqlSessionFactory3());
    }
}

5. 複数のマッパー ディレクトリを作成する

各マッパー ディレクトリは、異なるデータベースのマッパー ファイルおよび Mapper.xml ファイルに対応します。ここではマッパーを例として取り上げます。Mapper3 と Mapper4 の下にそれぞれ ApiResExtendMapper3 と ApiResExtendMapper4 を作成し、対応する XML ファイルを作成します。

@Mapper
public interface ApiResExtendMapper3 {
    
    



    /**
     * 通过实体作为筛选条件查询
     *
     * @param apiResExtend 实例对象
     * @return 对象列表
     */
    List<ApiResExtend> queryByUrl(ApiResExtend apiResExtend);
}
@Mapper
public interface ApiResExtendMapper4 {
    
    



    /**
     * 通过实体作为筛选条件查询
     *
     * @param apiResExtend 实例对象
     * @return 对象列表
     */
    List<ApiResExtend> queryByUrl(ApiResExtend apiResExtend);

}

このようにして、複数のデータソースの構成が完了し、プロジェクトのテストを開始できます~~

おすすめ

転載: blog.csdn.net/stalin_/article/details/132361501