请使用dynamic-datasource-spring-boot-starter和mybatisplus写出一个可操作多数据源的demo
时间: 2023-09-02 12:08:38 浏览: 144
好的,下面是一个简单的示例,演示如何在 Spring Boot 应用程序中使用 dynamic-datasource-spring-boot-starter 和 mybatisplus 实现多数据源操作。
首先,我们需要在 pom.xml 中添加以下依赖:
```xml
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.3.1</version>
</dependency>
<dependency>
<groupId>com.baomidou.dynamic-datasource</groupId>
<artifactId>dynamic-datasource-spring-boot-starter</artifactId>
<version>2.5.4</version>
</dependency>
```
接着,我们需要在 application.yml 中配置多个数据源:
```yaml
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
dynamic:
primary: db1
datasource:
db1:
url: jdbc:mysql://localhost:3306/db1?useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true
username: root
password: root
db2:
url: jdbc:mysql://localhost:3306/db2?useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true
username: root
password: root
```
这里我们配置了两个数据源,db1 和 db2。
接下来,我们需要创建两个数据源对应的 Mapper:
```java
@Mapper
public interface UserMapper1 extends BaseMapper<User> {
List<User> selectAll();
}
@Mapper
public interface UserMapper2 extends BaseMapper<User> {
List<User> selectAll();
}
```
我们在两个 Mapper 中都定义了一个查询所有用户的方法。
最后,我们需要在 Service 层中使用动态数据源和 mybatisplus:
```java
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserMapper1 userMapper1;
@Autowired
private UserMapper2 userMapper2;
@DS("db1")
@Override
public List<User> getAllUsersFromDb1() {
return userMapper1.selectAll();
}
@DS("db2")
@Override
public List<User> getAllUsersFromDb2() {
return userMapper2.selectAll();
}
}
```
在 Service 实现类中,我们使用了 @DS 注解来指定使用哪个数据源。当我们调用 getAllUsersFromDb1() 方法时,会使用 db1 数据源;调用 getAllUsersFromDb2() 方法时,会使用 db2 数据源。
这就是一个简单的使用 dynamic-datasource-spring-boot-starter 和 mybatisplus 实现多数据源操作的示例。
阅读全文