场景:

假设有一个项目,产品数据存放在new数据库中,公告信息存放在mini数据库中,我们要怎么去查询两个数据库中不同的数据呢?

这个时候我们就要用到mybatisplus提供的多数据源,仅需要如下配置即可实现相关功能。

一、引入依赖

引入多数据源需要的依赖:

<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数据源

四、测试

cf3e77d369c74f9ea59feb2b84758e1a.png
dfa7d8555cfe4c97ae9ad14c690dc5de.png

最后修改:2024 年 09 月 29 日
如果觉得我的文章对你有用,请随意赞赏