场景:
假设有一个项目,产品数据存放在new数据库中,公告信息存放在mini数据库中,我们要怎么去查询两个数据库中不同的数据呢?
这个时候我们就要用到mybatisplus提供的多数据源,仅需要如下配置即可实现相关功能。
一、引入依赖
引入多数据源需要的依赖:
<!--mysql驱动包-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.26</version>
</dependency>
<!--mybatis plus场景-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.3.1</version>
</dependency>
<!--多数据源-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>dynamic-datasource-spring-boot-starter</artifactId>
<version>3.3.2</version>
</dependency>
二、配置application.yml文件
配置两个数据源:
spring:
datasource:
dynamic:
datasource:
mini-ds:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/mini
username: root
password: 123456
new-ds:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/new
username: root
password: 123456
primary: mini-ds
注意:其中primary代表主数据源,如果没有配置相应注解则会默认读取这个数据源
三、使用
在Controller中使用@DS注解:
// 获取首页公告列表
@GetMapping("/getnoticelist")
public Result getNoticeList(){
Result noticeList = homeService.getNoticeList();
return noticeList;
}
// 获取首页推荐产品列表(6款)
@GetMapping("/getproductlist")
@DS("new-ds")
public Result getProductList(){
Result productList = homeService.getProductList();
return productList;
}
解释:获取公告列表则使用默认的mini-ds数据源,而获取产品列表则使用了new-ds数据源