MybatisPlus拓展——实现多数据源操作

多数据源

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

1、导入依赖


    com.baomidou
    dynamic-datasource-spring-boot-starter
    3.5.1

    com.baomidou
    mybatis-plus-boot-starter
    3.5.2

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");
  }
}

Original: https://www.cnblogs.com/buchizicai/p/16607707.html
Author: 不吃紫菜
Title: MybatisPlus拓展——实现多数据源操作

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/578686/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • docker操作常用命令:

    镜像查询:docker seacher xxxx 下载: dcoker pull xxx 查看下载的镜像: docker images 运行docker :以redis 为例: d…

    Linux 2023年6月13日
    086
  • KMS官网链接(无毒)

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    Linux 2023年6月7日
    092
  • Linux 学习笔记

    Linux 学习笔记 作者:Grey 原文地址: 博客园:Linux 学习笔记 CSDN:Linux 学习笔记 说明 本文如果没有特别说明,环境是 CentOS 7, 主要是日常学…

    Linux 2023年5月27日
    0109
  • 音视频技术入门课- 03 如何做音视频的封装和转码

    视频转码主要涉及编码压缩算法(Encoding)、格式封装操作 (Muxing)、数据传输 (例如 RTMP、RTP)、格式解封装(Demuxing)、解码解压缩算法(Decodi…

    Linux 2023年6月7日
    054
  • Laxcus集群操作系统应用软件:远程终端

    今天介绍一个Laxcus集群操作系统上的应用软件:远程终端。 远程终端提供和控制台相同的功能,都是由用户使用分布式命令操纵计算机集群上的服务器,处理各种各样的分布计算任务。所不同的…

    Linux 2023年6月6日
    070
  • NoteOfMySQL-13-事务与并发控制

    一、事务简介 存储引擎如InnoDB、BDB才支持事务处理。 每个事务(transaction)的处理必须满足ACID原则: 原子性(Atomicity): 原子性指每个事务都必须…

    Linux 2023年6月14日
    0126
  • WEB自动化-06-命令行运行Cypress

    6 命令行运行Cypress Cypress命令行的运行基本语法格式如下所示: cypress <command> [options] command代表运行的命令,是…

    Linux 2023年6月7日
    0113
  • Linux 0.11源码阅读笔记-高速缓冲

    高速缓冲 概念 高速缓冲区是内存中的一块内存,它充当块设备和内核中其他程序之间的桥梁。如果内核程序需要访问块设备中的数据,则需要通过高速缓冲区进行间接操作。 [En] The hi…

    Linux 2023年5月27日
    073
  • XXE漏洞学习

    0x00 XXE漏洞介绍: 背景:2018-7-4 微信支付SDK漏洞(XXE漏洞),攻击者可以获取服务器中目录结构,文件内容,eg:代码,各种 私钥。敏感数据泄露 0x01什么是…

    Linux 2023年6月6日
    0102
  • 如何使用 etcd 实现分布式 /etc 目录

    etcd 是一款兼具一致性和高可用性的键值数据库,简单、安全、快速、可信,目前是 Kubernetes 的首要数据存储。我们先来看一段 etcd 官方对于名字的解释。 The na…

    Linux 2023年6月14日
    0124
  • redis研究记录

    redis研究记录 1 概述目前多数的NoSql数据库本质上都是键值对形式,Redis也不例外。作为缓存数据库的一种,和Memcached相比,有以下几种主要的优点:(1)速度上,…

    Linux 2023年5月28日
    076
  • 【4】2022年6月

    6月15日 今早10点教师资格面试成绩出来了,幸好一次性通过。笔面都一次性通过,比我预想的顺利,谢谢各位考官的照顾。 我知道自己面试的时候既感冒又受伤,状态是不好的,发挥不了真实的…

    Linux 2023年6月13日
    074
  • 华为IPv6 GRE隧道

    IPv6 over IPv4 GRE封装隧道 实验目标: 该实验参考了华为官网案例配置https://support.huawei.com/enterprise/zh/doc/ED…

    Linux 2023年6月7日
    077
  • 二分查找

    一:二分查找算法 本文章列出刷题中常用的二分查找场景:寻找一个数、寻找左侧边界、寻找右侧边界。 ps:什么最大值的最小,最远的最近。->都是二分 1:1二分查找框架 int …

    Linux 2023年6月7日
    082
  • RAID级别

    常用选项 模式: 创建:-C 装配:-A 监控:-F 管理:-f, -r, -a < raiddevice> : /dev/md# < component-dev…

    Linux 2023年6月6日
    086
  • ASP.NET Core 2.2 : 二十. Action的多种数据返回格式处理机制

    上一章讲了系统如何将客户端提交的请求数据格式化处理成我们想要的格式并绑定到对应的参数,本章讲一下它的”逆过程”,如何将请求结果按照客户端想要的格式返回去。 …

    Linux 2023年6月7日
    0128
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球