1.添加依赖
以maven项目为例,修改pom.xml文件添加依赖,如果是gradle修改build.gradle文件
<dependencies>
<!-- Spring Boot Starter Data JPA -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<!-- 数据库驱动,以MySQL为例 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<!-- Spring Boot Starter Web(如果需要Web支持) -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- 其他依赖... -->
</dependencies>
2.配置数据源
再application.properties或者application.yml文件
spring:
datasource:
db1:
url: jdbc:mysql://localhost:3306/db1
username: user1
password: pass1
driver-class-name: com.mysql.cj.jdbc.Driver
db2:
url: jdbc:mysql://localhost:3306/db2
username: user2
password: pass2
driver-class-name: com.mysql.cj.jdbc.Driver
3.配置文件
@MapperScan(basePackages = "com.demo.mapper.db1",sqlSessionFactoryRef = "db1SF")
@Configuration
public class Db1MapperConfig {
}
@MapperScan(basePackages = "com.demo.mapper.db2",sqlSessionFactoryRef = "db2SF")
@Configuration
public class Db2MapperConfig {
}
@Configuration
public class DataSourceConfig {
@Bean(name = "db1Ds")
@Primary
@ConfigurationProperties(prefix = "spring.datasource.db1")
public DataSource db1DS(){
return DataSourceBuilder.create().build();
}
@Bean(name = "db2Ds")
@ConfigurationProperties(prefix = "spring.datasource.db2")
public DataSource db2DS(){
return DataSourceBuilder.create().build();
}
@Primary
@Bean(name = "db1SF")
public SqlSessionFactory mainSF(@Qualifier("db1Ds")DataSource dataSource) throws Exception{
MybatisSqlSessionFactoryBean mybatisSqlSessionFactoryBean = new MybatisSqlSessionFactoryBean();
mybatisSqlSessionFactoryBean.setDataSource(dataSource);
mybatisSqlSessionFactoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mapper/db1/*.xml"));
return mybatisSqlSessionFactoryBean.getObject();
}
@Bean(name = "db2SF")
public SqlSessionFactory targetSF(@Qualifier("db2Ds")DataSource dataSource) throws Exception{
MybatisSqlSessionFactoryBean sqlSessionFactoryBean = new MybatisSqlSessionFactoryBean();
sqlSessionFactoryBean.setDataSource(dataSource);
mybatisSqlSessionFactoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mapper/db2/*.xml"));
return sqlSessionFactoryBean.getObject();
}
/**
* 事务管理
* @param dataSource
* @return
*/
@Bean(name = "db1TM")
public DataSourceTransactionManager mainTM(@Qualifier("db1Ds") DataSource dataSource) {
return new DataSourceTransactionManager(dataSource);
}
@Bean(name = "db2TM")
public DataSourceTransactionManager targetTM(@Qualifier("db2Ds") DataSource dataSource) {
return new DataSourceTransactionManager(dataSource);
}
}
4.项目结构
-sec
- - main
- - - -com
- - - - -demo
- - - - - -config
- - - - - - -Db1MapperConfig.java
- - - - - - -Db2MapperConfig.java
- - - - - - -DataSourceConfig.java
- - - - - -mapper
- - - - - - -db1
- - - - - - - -Db1Mapper.java
- - - - - - -db2
- - - - - - - -Db2Mapper.java
- - -java
- - -resources
- - - -application.yaml