使用步骤
- 引入相关依赖
org.mybatis.spring.boot mybatis-spring-boot-starter 2.1.1 com.alibaba druid-spring-boot-starter 1.1.10
- 在application.yml文件中配置数据源
spring:
datasource:
druid:
master:
url: jdbc:mysql://localhost:3306/master
username: root
password: root
driver-class-name: com.mysql.jdbc.Driver
filters: stat
max-active: 20
initial-size: 1
max-wait: 60000
min-idle: 1
time-between-eviction-runs-millis: 60000
min-evictable-idle-time-millis: 300000
validation-query: select 'x'
test-while-idle: true
test-on-borrow: false
test-on-return: false
pool-prepared-statements: true
max-open-prepared-statements: 20
slave:
url: jdbc:mysql://localhost:3306/slave
username: root
password: root
driver-class-name: com.mysql.jdbc.Driver
filters: stat
max-active: 20
initial-size: 1
max-wait: 60000
min-idle: 1
time-between-eviction-runs-millis: 60000
min-evictable-idle-time-millis: 300000
validation-query: select 'x'
test-while-idle: true
test-on-borrow: false
test-on-return: false
pool-prepared-statements: true
max-open-prepared-statements: 20
- 在配置类中配置多数据源
@Configuration
public class DataSourceConfig {
@Bean
@ConfigurationProperties(prefix = "spring.datasource.druid.master")
public DataSource masterDataSource() {
return DruidDataSourceBuilder.create().build();
}
@Bean
@ConfigurationProperties(prefix = "spring.datasource.druid.slave")
public DataSource slaveDataSource() {
return DruidDataSourceBuilder.create().build();
}
@Bean(name = "dynamicDataSource")
public DynamicDataSource dataSource(DataSource masterDataSource, DataSource slaveDataSource) {
Map
- 在MyBatis Plus的配置类中配置多数据源
@Configuration
@MapperScan(basePackages = "com.example.mapper", sqlSessionTemplateRef = "dynamicSqlSessionTemplate")
public class MybatisPlusConfig {
@Bean
public SqlSessionFactory sqlSessionFactory(@Qualifier("dynamicDataSource") DataSource dataSource) throws Exception {
MybatisSqlSessionFactoryBean sqlSessionFactory = new MybatisSqlSessionFactoryBean();
sqlSessionFactory.setDataSource(dataSource);
return sqlSessionFactory.getObject();
}
@Bean
public SqlSessionTemplate dynamicSqlSessionTemplate(@Qualifier("sqlSessionFactory") SqlSessionFactory sqlSessionFactory) throws Exception {
return new SqlSessionTemplate(sqlSessionFactory);
}
}
可以帮助开发者实现快速、简单的多数据源访问,只需要按照上述步骤进行配置即可。