首页 > 其他分享 >MybatisPlus——实现多数据源操作

MybatisPlus——实现多数据源操作

时间:2022-08-20 14:56:07浏览次数:102  
标签:MybatisPlus 数据源 dynamic xx master datasource 操作 slave

多数据源

适用:一般工作时候会有多个数据库,每个库对应不同的业务数据。程序如果每次数据都访问同一个数据库,该数据库压力很大访问会很慢。

官方文档:https://baomidou.com/(建议多看看官方文档,每种功能里面都有讲解)【本文章使用的mybatisplus版本为3.5.2】

约定

  1. 本框架只做 切换数据源 这件核心的事情,并不限制你的具体操作,切换了数据源可以做任何CRUD。
  2. 配置文件所有以下划线 _ 分割的数据源 首部 即为组的名称,相同组名称的数据源会放在一个组下。
  3. 切换数据源可以是组名,也可以是具体数据源名称。组名则切换时采用负载均衡算法切换。
  4. 默认的数据源名称为 master ,你可以通过 spring.datasource.dynamic.primary 修改。
  5. 方法上的注解优先于类上注解。
  6. DS支持继承抽象类上的DS,暂不支持继承接口上的DS。

使用

1、导入依赖

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
    <version>3.5.1</version>
</dependency>
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.5.2</version>
</dependency>

2、yaml 配置不同的数据源

spring:
  datasource:
    dynamic:
      primary: master #设置默认的数据源或者数据源组,默认值即为master
      strict: false #严格匹配数据源,默认false. true未匹配到指定数据源时抛异常,false使用默认数据源
      datasource:
        master:
          url: jdbc:mysql://xx.xx.xx.xx:3306/dynamic
          username: root
          password: 123456
          driver-class-name: com.mysql.jdbc.Driver # 3.2.0开始支持SPI可省略此配置
        slave_1:
          url: jdbc:mysql://xx.xx.xx.xx:3307/dynamic
          username: root
          password: 123456
          driver-class-name: com.mysql.jdbc.Driver
        slave_2:
          url: ENC(xxxxx) # 内置加密,使用请查看详细文档
          username: ENC(xxxxx)
          password: ENC(xxxxx)
          driver-class-name: com.mysql.jdbc.Driver
       #......省略
       #以上会配置一个默认库master,一个组slave下有两个子库slave_1,slave_2

注:多数据源配置规范

# 多主多从                      纯粹多库(记得设置primary)                   混合配置
spring:                               spring:                               spring:
  datasource:                           datasource:                           datasource:
    dynamic:                              dynamic:                              dynamic:
      datasource:                           datasource:                           datasource:
        master_1:                             mysql:                                master:
        master_2:                             oracle:                               slave_1:
        slave_1:                              sqlserver:                            slave_2:
        slave_2:                              postgresql:                           oracle_1:
        slave_3:                              h2:                                   oracle_2:

3、使用 @DS 切换数据源。

@DS 可以注解在方法上或类上,同时存在就近原则 方法上注解 优先于 类上注解

@Service
@DS("slave")
public class UserServiceImpl implements UserService {

  @Autowired
  private JdbcTemplate jdbcTemplate;

  public List selectAll() {
    return  jdbcTemplate.queryForList("select * from user");
  }
  
  @Override
  @DS("slave_1")
  public List selectByCondition() {
    return  jdbcTemplate.queryForList("select * from user where age >10");
  }
}

标签:MybatisPlus,数据源,dynamic,xx,master,datasource,操作,slave
From: https://www.cnblogs.com/buchizicai/p/16607707.html

相关文章

  • 王道操作系统:1.4、操作系统结构
    操作系统结构分层法概念是将操作系统分为若干层,最底层(层0)为硬件,最高层(层N)为用户接口,每层只能调用紧邻它的低层的功能和服务(单向依赖)图示优点①便于系统的调试和验......
  • 并发学习记录05:线程状态和操作系统中进程状态对比
    操作系统中进程状态1.运行态:进程正在处理机上运行。在单处理机的环境下,每个时刻只有一个进程处于运行态2.就绪态:进程获得了除处理机外的一切所需资源,一旦得到处理机,就可......
  • Hbase常用操作
    1清空表数据#truncate会把表分区也清除掉truncate'namespace:tableName'#truncate_preserve只清除数据truncate_preserve'namespace:tableNam2删除具体数据#......
  • DOM操作
    DOM操作内容操作html():获取/设置元素的标签体内容<a><font>内容</font></a>---><font>内容</font>text():获取/设置元素的标签体纯文本内容<a><font>内容</font></......
  • 关于devreport 使用报表模版.repx,数据源和模版文件关系
    随着用户需求不断增加,固定的report表内的字段.不能满足用户需求.于是要给用户加上报表的设计功能.这样在展示的时候更有灵活性,也不用每个改动都找程序人员不带设计......
  • mybatisplus使用xml
    一、配置xml路径mybatis-plus:mapper-locations:classpath:mapper/*.xml二、编写Mapper里面的方法publicinterfaceUserMapperextendsBaseMapper{ListfindAll()......
  • MybatisPlus分页 假性失效
    背景:前端告诉我,页面只能显示1000条数据,实际上有4701条数据,为什么其他数据不能显示,后端返回的total就是1000。我看了后端分页插件配置也没有发现不正确的地方,使用了page()方......
  • JQuery_DOM操作_属性操作_CRUD操作
    CRUD操作append():父元素将子元素追加到末尾对象1.append(对象2):将对象2添加到对象1元素内部,并且在末尾prepend():父元素将子元素追加到开头对象1.prepend(对象2):将......
  • 操作系统学习笔记4 | CPU管理 && 多进程图像
    操作系统的核心功能就是管理计算机硬件,而CPU就是计算机中最核心的硬件。而通过学习笔记3的简史回顾,操作系统通过多进程图像实现对CPU的管理。所以多进程图像是操作系统的核......
  • 操作系统:中断和异常
    操作系统:中断和异常目录操作系统:中断和异常中断机制的诞生中断的概念和作用中段的分类内中断(也称为异常、例外、陷入)外中断(中断)外中断的处理过程中断机制的诞生​ 早期......