SpringBoot+MyBatisPlus实现多数据源动态切换

news2025/1/13 13:46:22

场景:

假设有一个项目,产品数据存放在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数据源

四、测试

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2176946.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【C语言从不挂科到高绩点】24-C语言中的枚举【重点知识】

Hello!彦祖们,俺又回来了!!!,继续给大家分享 《C语言从不挂科到高绩点》课程!! 本节将为大家讲解C语言中非常重要的知识点-枚举: 本套课程将会从0基础讲解C语言核心技术,适合人群: 大学中开设了C语言课程的同学想要专升本或者考研的同学想要考计算机等级证书的同学想…

Anzo Capital昂首资本官网:掌握止损单的艺术,优化交易策略

通过在Anzo Capital昂首资本官网的深入研究&#xff0c;投资者发现宝贵的交易策略&#xff0c;尤其是在市场不活跃的时期&#xff0c;止损单的触发时机往往相当微妙。很多时候&#xff0c;主力的动作似乎开始得更晚&#xff0c;这种情况在交易市场中并不罕见。尽管没有人能够确…

【数据库文档】数据库设计说明书(Word原件参考)

一、 总述 &#xff08;一&#xff09; 编写目的 二、 外部设计 &#xff08;一&#xff09; 环境说明 &#xff08;二&#xff09; 指导 三、 物理实现 &#xff08;一&#xff09; 物理结构 &#xff08;二&#xff09; 安全设计 四、 表设计结构 &#xff08;一&#xff09;…

AutoGen实现多代理—AI Agentic Design Patterns with AutoGen(二)

1. AutoGen顺序对话在客户入职案例上的应用 如图&#xff0c;客户入职前会经历三个阶段&#xff0c;一个代理收集客户的信息&#xff0c;一个代理收集客户的感兴趣话题&#xff0c;一个代理根据前两个代理的基础信息与客户代理对话&#xff0c;产生聊天信息。 本节实验的地址&…

基于SSM+小程序的会议发布与预约管理系统(会议1)(源码+sql脚本+视频导入教程+文档)

&#x1f449;文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1、项目介绍 本基于微信小程序的会议发布与预约系统管理员功能有个人中心&#xff0c;发布者管理&#xff0c;用户管理&#xff0c;发布会议管理&#xff0c;会议预约管理&#xff0c;留言板管理&…

C++远端开发环境手动编译安装(centos7)

背景 直接使用yum安装&#xff0c;无法安装指定的版本&#xff0c;因为很多版本并没有在镜像仓库中&#xff0c;所以此处进行手动安装指定版本 使用VMWare安装centos7 准备centos镜像 可以自行搜索下载地址&#xff0c;阿里云的也可以 下载VmWare&#xff0c;社区版即可 可…

【第十四周】PyTorch深度学习实践1

目录 摘要Abstract1.反向传播2.线性回归2.1.准备数据集2.2.设计模型2.3.定义损失函数和优化器2.4.模型训练 3.逻辑回归4.处理多维特征的输入5.加载数据集5.1.导入必要的库5.2.准备数据集5.3.定义模型5.4.构建损失函数和优化器5.5.训练模型 总结 摘要 本周主要通过B站刘二大人的…

酒店新科技,飞睿智能毫米波雷达人体存在感应器,智能照明创新节能新风尚

在这个日新月异的时代&#xff0c;科技正以未有的速度改变着我们的生活。从智能手机到智能家居&#xff0c;每一个细微之处都渗透着科技的魅力。而今&#xff0c;这股科技浪潮已经席卷到了酒店行业&#xff0c;为传统的住宿体验带来了翻天覆地的变化。其中&#xff0c;引人注目…

基于SpringBoot+Vue的茶园茶农文化交流平台

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码 精品专栏&#xff1a;Java精选实战项目…

对已经运行的flask服务测试代码覆盖率

上一篇文章《用pytest-cov获取flask项目的测试代码覆盖率》展示了用pytest的测试用例验证flask的函数&#xff0c;获取代码覆盖率信息。但是上述方法要求web服务没有提前启动&#xff0c;而是由pytest来启动&#xff0c;然后运行测试用例。 那么对于已经启动的web服务&#xff…

【STM32-HAL库】MQ2烟雾传感器使用(STM32F407ZET6)

MQ2可燃气体传感器介绍 MQ2是一种广谱气体传感器&#xff0c;能够检测多种可燃气体和烟雾。它是一种低成本、高灵敏度的传感器&#xff0c;广泛应用于家庭和工业环境中的气体监测。 原理 MQ2传感器的工作原理基于金属氧化物半导体&#xff08;MOX&#xff09;技术。当传感器暴露…

俄罗斯市场合格评定准入认证要求

前言 国内厂家想要把自己的产品顺利出口到俄罗斯市场&#xff0c;就需要基本了解俄罗斯的市场合格评定准入要求。俄罗斯主要实行的认证有EAC(TR-CU/CU-TR)认证、GOST R认证、计量认证和医疗产品国家注册。下面就分别简单介绍一下这几个产品认证。 一、EAC(TR-CU/CU-TR)认证介绍…

LVGL 笔记

在显示GUI的过程中需要对某些对象进行临时隐藏或临时显示,因此需要对该对象的FLAG进行配置就可以实现对象的显示和隐藏了. lv_obj_add_flag(user_obj, LV_OBJ_FLAG_HIDDEN);//隐藏对象 lv_obj_clear_flag(user_obj, LV_OBJ_FLAG_HIDDEN);//取消隐藏 GUI-Guider 中的选项卡 注意…

Linux驱动开发(速记版)--驱动基础

第一章 初识内核源码 Linux系统源码提供了操作系统的核心功能&#xff0c;如进程管理、内存管理、文件系统等。 BusyBox这类的文件系统构建工具&#xff0c;则提供了在这些核心功能之上运行的一系列实用工具和命令&#xff0c;使得用户能够执行常见的文件操作、文本处理、网络配…

MaxKB知识库问答系统入选Gitee最有价值开源项目

2024年9月19日&#xff0c;飞致云旗下开源项目MaxKB成功加入Gitee平台主导的GVP计划&#xff0c;入选2024年GVP——Gitee最有价值开源项目。MaxKB也是继MeterSphere、DataEase和1Panel之后&#xff0c;飞致云旗下第四个入选GVP的开源项目。 ▲图1 MaxKB入选2024年Gitee最有价值…

软机器人咋模仿生物?响应式水凝胶Aquabots有啥用?快来了解一下!

大家好&#xff0c;今天我们要来了解一项关于响应式水凝胶Aquabots的研究——《Responsive‐Hydrogel Aquabots》发表于《Advanced Science》。在当今科技发展中&#xff0c;制造能像生物体一样具有响应适应性的软机器人是个挑战。而Aquabots为解决这个问题带来了新的突破。它通…

vue3项目执行pnpm update后还原package.json文件后运行报错

项目场景&#xff1a; vue官方版本已更新到vue3.5&#xff0c;项目中还在使用vue3.4&#xff0c;因此想要更新项目vue版本。 问题描述 执行了 pnpm update 命令&#xff0c;一键更新了所有包&#xff0c;更新完成后项目不能正常运行。为了还原项目代码&#xff0c;先删除 nod…

“AI+Security”系列第3期(七):智能体车企落地实践

近日&#xff0c;由安全极客、Wisemodel 社区、InForSec 网络安全研究国际学术论坛和海升集团联合主办的 “AI Security” 系列第 3 期技术沙龙 ——“AI 安全智能体&#xff0c;重塑安全团队工作范式” 活动顺利举行。此次活动备受关注&#xff0c;吸引了线上线下超过千名观众…

DriveVLM 论文学习

论文链接&#xff1a;https://arxiv.org/abs/2402.12289 解决了什么问题&#xff1f; 自动驾驶对交通行业有着革命性的作用&#xff0c;实现 FSD 的一个主要障碍就是场景理解。场景理解涉及在复杂且不可预测的环境中进行导航&#xff0c;这些环境可能包括恶劣的天气条件、复杂…

【Git】克隆主项目,并同时克隆所有子模块

子模块 带有箭头的文件夹&#xff08;relaxed_ik_core&#xff09;通常表示这是一个 Git 子模块&#xff08;submodule&#xff09;。Git 子模块是一种嵌入式的 Git 仓库&#xff0c;它允许你在一个仓库中引用其他的 Git 仓库。换句话说&#xff0c;relaxed_ik_core 不是这个项…