springboot mybatis 利用DruidConfig 配置两个数据源
时间: 2024-11-29 16:33:53 浏览: 28
Spring Boot 和 MyBatis 结合 Druid 数据源配置两个数据源通常用于分布式系统场景下,比如有读写分离的需求。首先,你需要添加Druid的相关依赖到你的项目中。以下是设置两个数据源的基本步骤:
1. 添加依赖:在`pom.xml`文件中添加Druid的依赖,例如:
```xml
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<!-- 根据实际版本添加 -->
</dependency>
```
2. 创建DataSource bean:在`application.yml`或`application.properties`中配置两个数据源,分别为默认的`dataSource`和专门的`readDataSource`。例如:
```yaml
dataSources:
dataSource:
driverClassName: com.mysql.cj.jdbc.Driver
url: ${spring.datasource.url}
username: ${spring.datasource.username}
password: ${spring.datasource.password}
readDataSource:
druid:
# 共享基本属性
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
url: ${spring.datasource.read.url}
username: ${spring.datasource.read.username}
password: ${spring.datasource.read.password}
# 读库特定配置,如连接池大小等
initial-size: 5
max-active: 20
min-idle: 5
time-between-eviction-runs-millis: 60000
validation-query: SELECT 'x'
```
3. 配置数据源切换:在MyBatis的SqlSessionFactoryBean中,通过`typeAliasesPackage`属性指定扫描包路径,然后在Mapper接口上使用`@MapperScan`注解指定扫描的包,并传入`sqlSessionFactory`属性,如:
```java
@MapperScan("your.mapper.packages")
public class MybatisConfiguration {
@Autowired
private DataSource writeDataSource; // 写操作的数据源
@Autowired
private DataSource readDataSource; // 读操作的数据源
@Bean
public SqlSessionFactory sqlSessionFactory() throws Exception {
SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
factoryBean.setDataSource(readDataSource); // 默认设置为读库,可以根据业务场景动态切换
return factoryBean.getObject();
}
}
```
4. 动态切换数据源:可以使用AOP(面向切面编程)技术,在需要进行读操作的地方切换到`readDataSource`。
阅读全文