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);
}
このようにして、複数のデータソースの構成が完了し、プロジェクトのテストを開始できます~~