mysql + mybatis + druid,多数据源配置
时间: 2023-09-24 12:03:05 浏览: 260
springboot+mysql+mybatis+druid实现多数据源配置
对于使用 MySQL、MyBatis 和 Druid 实现多数据源配置,你可以按照以下步骤进行操作:
1. 添加相关依赖:在你的项目中,首先需要添加 MySQL、MyBatis 和 Druid 的相关依赖。你可以在项目的 `pom.xml` 文件中添加以下依赖:
```xml
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>版本号</version>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>版本号</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>版本号</version>
</dependency>
```
请确保将 `版本号` 替换为你所需的实际版本。
2. 配置数据源:在 `application.properties` 或 `application.yml` 文件中配置数据源的相关信息。以下是一个示例配置:
```yaml
spring:
datasource:
master:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/master_db?useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC
username: root
password: password
slave:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/slave_db?useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC
username: root
password: password
```
这里使用了两个数据源,一个是 `master`,另一个是 `slave`。你可以根据实际情况进行配置。
3. 配置 Druid 连接池:在 `application.properties` 或 `application.yml` 文件中配置 Druid 连接池的相关信息。以下是一个示例配置:
```yaml
spring:
datasource:
druid:
initial-size: 5
min-idle: 5
max-active: 20
test-on-borrow: true
validation-query: SELECT 1
```
这里配置了 Druid 连接池的一些常用参数,你可以根据实际需求进行调整。
4. 配置 MyBatis:创建 MyBatis 的配置文件,例如 `MyBatisConfig.java`,并在其中配置数据源和相关的 MyBatis 设置。以下是一个示例配置:
```java
@Configuration
@MapperScan(basePackages = "com.example.mapper", sqlSessionTemplateRef = "sqlSessionTemplate")
public class MyBatisConfig {
@Primary
@Bean(name = "masterDataSource")
@ConfigurationProperties(prefix = "spring.datasource.master")
public DataSource masterDataSource() {
return DruidDataSourceBuilder.create().build();
}
@Bean(name = "slaveDataSource")
@ConfigurationProperties(prefix = "spring.datasource.slave")
public DataSource slaveDataSource() {
return DruidDataSourceBuilder.create().build();
}
@Primary
@Bean(name = "sqlSessionFactory")
public SqlSessionFactory sqlSessionFactory(@Qualifier("masterDataSource") DataSource masterDataSource,
@Qualifier("slaveDataSource") DataSource slaveDataSource) throws Exception {
SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
sessionFactory.setDataSource(dynamicDataSource(masterDataSource, slaveDataSource));
return sessionFactory.getObject();
}
@Bean(name = "sqlSessionTemplate")
public SqlSessionTemplate sqlSessionTemplate(@Qualifier("sqlSessionFactory") SqlSessionFactory sqlSessionFactory) {
return new SqlSessionTemplate(sqlSessionFactory);
}
@Bean(name = "dynamicDataSource")
public DataSource dynamicDataSource(@Qualifier("masterDataSource") DataSource masterDataSource,
@Qualifier("slaveDataSource") DataSource slaveDataSource) {
DynamicRoutingDataSource dynamicRoutingDataSource = new DynamicRoutingDataSource();
Map<Object, Object> dataSourceMap = new HashMap<>();
dataSourceMap.put("master", masterDataSource);
dataSourceMap.put("slave", slaveDataSource);
dynamicRoutingDataSource.setDefaultTargetDataSource(masterDataSource);
dynamicRoutingDataSource.setTargetDataSources(dataSourceMap);
return dynamicRoutingDataSource;
}
}
```
在这个配置类中,我们创建了两个数据源 `masterDataSource` 和 `slaveDataSource`,并将它们注入到 `dynamicDataSource` 中。通过 `DynamicRoutingDataSource` 来实现动态切换数据源。
5. 创建 Mapper 接口和 XML 文件:按照正常的 MyBatis 开发流程,创建 Mapper 接口和对应的 XML 文件,并在其中编写 SQL 语句。
完成上述步骤后,你就成功地配置了 MySQL、MyBatis 和 Druid 的多数据源。你可以根据需要在不同的业务中使用不同的数据源。
阅读全文