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/609790/

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

(0)

大家都在看

  • 【四】pig4cloud项目一键build — 集成环境容器推送到 dockerhub仓储

    集成容器打包成镜像 命令解读: docker commit -m=”描述信息” -a=”&a…

    Java 2023年6月8日
    082
  • Java排序——二分查找法

    package Array; public class array { public static void main(String[] args) { int [] array …

    Java 2023年6月8日
    0115
  • 在Nginx 下运行 Laravel5.1 的配置

    一、nginx 的 vhost.conf 配置: server { listen 80; server_name sub.domain.com; set $root_path ‘/…

    Java 2023年5月30日
    0110
  • Kafka

    1. Kafka简介 1.1 消息队列 1.1.1 消息队列简介 消息Message:通讯设备之间传递的数据 队列Queue:一种特殊的线性表(数据元素首尾相连),特殊之处在于只允…

    Java 2023年6月8日
    0109
  • 线程的同步

    线程同步机制同步块:Java中提供了同步机制,可以有效的防止资源冲突。同步机制使用 synchronized关键字 使用该关键字的代码块称为同步块。同步块 语法: synchron…

    Java 2023年6月9日
    071
  • 【微服务】- 服务调用-OpenFeign

    服务调用 – OpenFeign 😄生命不息,写作不止🔥 继续踏上学习之路,学之分享笔记👊 总有一天我也能像各位大佬一样🏆 一个有梦有戏的人 @怒放吧德德🌝分享学习心得…

    Java 2023年6月16日
    082
  • 【力扣】1310. 子数组异或查询

    有一个正整数数组 arr,现给你一个对应的查询数组 queries,其中 queries[i] = [Li, Ri]。 对于每个查询 i,请你计算从 Li 到 Ri 的 XOR 值…

    Java 2023年6月8日
    080
  • 若依3.6.0使用Mybatis-plus分页失效以及完美替换Pagehelper

    一、前言 小编最近在经历后端框架的迁移,虽然不是小编来做,但是有个分页的情况让小编和一个同事去搞。说一下小编这边的需求:原来框架使用 Mybatis-plus进行分页,要更换的新框…

    Java 2023年6月15日
    0105
  • Java学生管理系统(详解)

    下面会分享我在做这个练习时的一些方法以及程序代码 供大家参考(最后附上完整的项目代码)。 首本人只是个初学Java的小白,可能项目中有许多地方使用不规范的以及代码的格式问题会引起各…

    Java 2023年6月15日
    098
  • 619

    entity: package com.meta.hrpz.domain.entity; import com.alibaba.fastjson.JSON; import lomb…

    Java 2023年6月5日
    075
  • 分布式任务调度平台 xxl-job

    分布式任务调度平台 1、概念 官方地址中文版:http://www.xuxueli.com/xxl-job源码仓库地址:http://gitee.com/xuxueli0323/x…

    Java 2023年6月5日
    0116
  • 兜兜转转,重回博客园。

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

    Java 2023年6月5日
    096
  • 【SpringCloud-Alibaba系列教程】6.openfegin的使用

    一、openfegin介绍 OpenFeign是一种声明式、模板化的HTTP客户端。在Spring Cloud中使用OpenFeign,可以做到使用HTTP请求访问远程服务,就像调…

    Java 2023年6月5日
    0106
  • HikariCP连接池参数解释

    HikariCP连接池参数解释 ## 数据库配置 spring.datasource.type=com.zaxxer.hikari.HikariDataSource spring….

    Java 2023年6月5日
    0104
  • 三、DOS命令

    常用的DOS命令 #盘符切换 D: #查看当前目录下的所有文件 dir #切换目录 cd+空格+/d+空格+路径 #返回上一级 cd+空格+.. #清理屏幕 cls #退出终端 e…

    Java 2023年6月5日
    0107
  • tensorflow 2.1 采坑记

    tf 2.1 安装了好多遍,把python 从3.6 搞到了3.7还是没办法安装成功 问题出在这里要使用这些新软件包,用户必须安装「Microsoft Visual C ++ Re…

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