druid-spring-boot-starter动态切换mysql数据
时间: 2023-07-09 11:09:20 浏览: 79
可以使用Druid数据源和Spring Boot的多数据源支持来实现动态切换MySQL数据源。具体步骤如下:
1. 添加Druid和Spring Boot多数据源依赖
在pom.xml文件中添加以下依赖:
```xml
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.21</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
```
2. 配置Druid数据源
在application.properties文件中添加以下配置:
```properties
# 数据源1
spring.datasource.druid.datasource-1.url=jdbc:mysql://localhost:3306/db1?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC&useSSL=false
spring.datasource.druid.datasource-1.username=root
spring.datasource.druid.datasource-1.password=123456
spring.datasource.druid.datasource-1.driver-class-name=com.mysql.cj.jdbc.Driver
# 数据源2
spring.datasource.druid.datasource-2.url=jdbc:mysql://localhost:3306/db2?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC&useSSL=false
spring.datasource.druid.datasource-2.username=root
spring.datasource.druid.datasource-2.password=123456
spring.datasource.druid.datasource-2.driver-class-name=com.mysql.cj.jdbc.Driver
```
3. 配置多数据源
在application.properties文件中添加以下配置:
```properties
# 数据源1对应的JPA配置
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect
spring.datasource.druid.datasource-1.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.druid.datasource-1.initial-size=5
spring.datasource.druid.datasource-1.min-idle=5
spring.datasource.druid.datasource-1.max-active=20
spring.datasource.druid.datasource-1.filters=stat,log4j
# 数据源2对应的JPA配置
datasource2.jpa.hibernate.ddl-auto=update
datasource2.jpa.show-sql=true
datasource2.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect
spring.datasource.druid.datasource-2.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.druid.datasource-2.initial-size=5
spring.datasource.druid.datasource-2.min-idle=5
spring.datasource.druid.datasource-2.max-active=20
spring.datasource.druid.datasource-2.filters=stat,log4j
# 多数据源配置
spring.datasource.dynamic.primary=datasource-1
spring.datasource.dynamic.datasource-1=druid.datasource-1
spring.datasource.dynamic.datasource-2=druid.datasource-2
```
4. 编写动态数据源切换代码
在需要使用多数据源的地方,通过以下代码来动态切换数据源:
```java
// 获取数据源
DynamicDataSourceContextHolder.setDataSourceKey("datasource-1");
DataSource dataSource = DynamicDataSource.getInstance().getDataSource();
// 使用数据源
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
List<Map<String, Object>> result = jdbcTemplate.queryForList("select * from user");
// 切换数据源
DynamicDataSourceContextHolder.setDataSourceKey("datasource-2");
dataSource = DynamicDataSource.getInstance().getDataSource();
jdbcTemplate = new JdbcTemplate(dataSource);
result = jdbcTemplate.queryForList("select * from user");
```
以上就是使用Druid和Spring Boot多数据源支持来实现动态切换MySQL数据源的步骤。