在使用MyBatis-Plus的Spring Boot项目中,处理多数据源和动态切换数据源的需求常见于企业级应用中。下面详细介绍如何配置多数据源以及如何实现动态切换数据源。
1. 配置多数据源
1.1 在application.yml中配置多个数据源
首先,在Spring Boot的application.yml
中配置多个数据源。
spring:
datasource:
db1:
url: jdbc:mysql://localhost:3306/db1
username: root
password: password
driver-class-name: com.mysql.cj.jdbc.Driver
db2:
url: jdbc:mysql://localhost:3306/db2
username: root
password: password
driver-class-name: com.mysql.cj.jdbc.Driver
1.2 定义数据源配置类
定义数据源配置类,配置不同的数据源和MyBatis的SqlSessionFactory
。
@Configuration
public class DataSourceConfig {
@Primary
@Bean(name = "db1DataSource")
@ConfigurationProperties(prefix = "spring.datasource.db1")
public DataSource db1DataSource() {
return DataSourceBuilder.create().build();
}
@Bean(name = "db2DataSource")
@ConfigurationProperties(prefix = "spring.datasource.db2")
public DataSource db2DataSource() {
return DataSourceBuilder.create().build();
}
@Primary
@Bean(name = "db1SqlSessionFactory")
public SqlSessionFactory db1SqlSessionFactory(@Qualifier("db1DataSource") DataSource dataSource) throws Exception {
SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
sessionFactory.setDataSource(dataSource);
return sessionFactory.getObject();
}
@Bean(name =