Spring Boot 实现动态数据源配置

前言

之前在CSDN博客以及某站看了教程,不免觉得有点不知如何下手,好在最后融合了以下,得出了一个比较简单的配置动态数据源的过程。

首先项目是Spring Boot的单体项目,我们的需求是要连接多个数据库,那么就需要配置多个数据源。接下来我会写清楚每一个步骤,让大家掌握这个技术。

 注意:不论数据库是Mysql 还是 SqlServer,原理是一样的!

目录

 一.引入依赖

 二.找到你的 Dao 或者是 Mapper文件

三.运行你的程序


 一.引入依赖

在pom文件中引入动态数据源配置依赖:

        <dependency><groupId>com.baomidou</groupId><artifactId>dynamic-datasource-spring-boot-starter</artifactId><version>3.5.0</version></dependency>

注意:确保你的项目已经引入了 MySQL 或者是 SQL server的依赖! 比如我的数据库是SQL server,我就引入了以下依赖:

        <dependency><groupId>com.microsoft.sqlserver</groupId><artifactId>mssql-jdbc</artifactId><version>8.4.0.jre8</version><scope>runtime</scope></dependency>

除此之外:还需要有 Mybatis 的依赖:

        <dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.2.2</version></dependency>

然后找到我们项目的 application.yml 或者是 application.properties 文件

严格按照如下格式进行数据源的配置:

spring:datasource:dynamic:#设置默认的数据源或者数据源组,默认值即为masterprimary: master#严格匹配数据源,默认false. true未匹配到指定数据源时抛异常,false使用默认数据源strict: falsedatasource:master:driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriverurl: jdbc:sqlserver://xxx.xxx.x.x:1433;DatabaseName=xxxusername: xxxpassword: xxxslave:driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriverurl: jdbc:sqlserver://xxx.xxx.x.x:1433;DatabaseName=xxxusername: xxxpassword: xxxslave2:driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriverurl: jdbc:sqlserver://xxx.xxx.x.x:1433;DatabaseName=xxxusername: xxxpassword: xxx

注意:一定严格按照以上格式,如果你的文字在代码后面,也是会报错的!

 二.找到你的 Dao 或者是 Mapper文件

也就是找到你的 Mapper 注解所在地

我们通常会在这个接口中定义我们的方法,并且提供给 Service 层来使用

那么现在只需要在接口中的方法上,加上所对应的数据源注解:@DS( )。

比如我用户名和密码存在了 master 数据源中,那么我 UserDao 中定义的方法,只要是用到了用户名和密码的都需要在 master 数据源中进行查找

这里的 master 和 slave 是在配置数据源的 yml 或 properties文件中自定义的,这个字段你可以自定义。

三.运行你的程序

直接运行,会看到 控制台中显示 : maser Start....  slave Start....

如果报错了,请仔细检查你的数据源配置中的 url 和 数据库的用户名以及密码,百分之九十都是自己的配置错误了。


Good Bye~!

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

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

相关文章

产品经理:做好有效的客户需求分析

需求分析是产品开发过程中的重要环节&#xff0c;它直接决定了产品是否能够满足市场需求和用户期望。通过深入了解客户需求&#xff0c;产品经理可以确保产品功能的设计符合用户的实际需求&#xff0c;从而提高产品的用户满意度和市场竞争力。 一、识别用户需求 识别用户需求…

目标检测数据集 - 海洋垃圾检测数据集下载「包含VOC、COCO、YOLO三种格式」

数据集介绍&#xff1a;海洋垃圾检测数据集&#xff0c;真实拍摄海洋海底场景高质量垃圾检测图片数据&#xff0c;涉及场景丰富&#xff0c;比如海底塑料垃圾数据、海底铁制品罐状垃圾数据、海底纸张垃圾数据、海洋生物和海底垃圾同框数据、海底探索仪器和海底垃圾同框数据、海…

【ArcGIS微课1000例】0114:基于DEM地形数据整体抬升或下降高程

相关阅读:【GlobalMapper精品教程】083:基于DEM整体抬升或下降地形高程的两种方式 文章目录 一、任务分析二、栅格计算器简介三、地形整体修改四、注意事项一、任务分析 打开软件,加载配套实验数据中的0112.rar中的dem数据,如下所示,dem的高程范围为256.75~342.37米,现在…

用PlantUML描绘C++世界:通过文本描述精准控制UML图的生成

往期本博主的 C 精讲优质博文可通过这篇导航进行查找&#xff1a; Lemo 的C精华博文导航&#xff1a;进阶、精讲、设计模式文章全收录 前言 在编写程序时&#xff0c;可视化的工具可以极大地帮助我们理解和设计复杂的系统。对于C程序员来说&#xff0c;一个强大的工具是UML&am…

怎么用微信小程序实现远程控制空调

怎么用微信小程序实现远程控制空调呢&#xff1f; 本文描述了使用微信小程序调用HTTP接口&#xff0c;实现控制空调&#xff0c;通过不同规格的通断器&#xff0c;来控制不同功率的空调的电源。 可选用产品&#xff1a;可根据实际场景需求&#xff0c;选择对应的规格 序号设备…

three.js能实现啥效果?看过来,这里都是它的菜(16)

不知不觉已经分享16期&#xff0c;在这个过程中得到了很多好朋友的支持&#xff0c;所以我决定坚持分享36期&#xff0c;让大家对three.js有更加直观的认知。

机器学习知识点总结

简介&#xff1a;随着人工智能&#xff08;AI&#xff09;蓬勃发展&#xff0c;也有越来越多的人涌入到这一行业。下面简单介绍一下机器学习的各大领域&#xff0c;机器学习包含深度学习以及强化学习&#xff0c;在本节的机器学习中主要阐述一下机器学习的线性回归逻辑回归&…

数据库讲解---(关系规范化)【二】

目录 前言 一.函数依赖相关 1.1函数依赖集F的逻辑蕴涵 1.2函数依赖集闭包 1.3函数依赖的推理规则 1.3.1独立推理规则 自反律 增广律 传递律 1.3.2其他推理规则 合并规则 分解规则 伪传递规则 二.数据集闭包与F逻辑蕴涵的充要条件 2.1属性集闭包 2.2F逻辑蕴涵的…

【uni-app】申请高德地图key,封装map.js,实现H5、iOS、Android通过getlocation获取地图定位信息

map组件基础使用 <template><view class"contact"><image class"img" :src"formData.headImg"></image><view class"info"><view click"callPhone">联系电话&#xff1a;{{formData.p…

线性代数|机器学习-P6正定和半正定矩阵

文章目录 1. 正定矩阵的判定标准2. 非正定矩阵3. 能量方程3. 正定方程4. 半正定矩阵 1. 正定矩阵的判定标准 目前我们有 5 种方法判断矩阵是否为正定矩阵&#xff1a; 所有的特征值大于零&#xff1a; λ i > 0 \lambda_i>0 λi​>0对于所有的非零向量x&#xff0c;…

RK3588 AB镜像升级学习(一)

参考资料&#xff1a;Android A/B 系统_洛奇看世界的博客-CSDN博客 一、AB镜像分区 区分了OTA升级镜像的两种方式&#xff1a; 传统的升级方式&#xff1a;设备有Android系统和Recovery系统&#xff0c;如果Android需要升级时&#xff0c;把内容存到cache分区。重启后进入re…

P3. 创建个人中心页面

P3. 创建个人中心页面 0 概述Tips1 个人中心页面1.1 创建 Bot 表及 pojo, mapper1.2 实现 Bot 增删改查的 API1.3 实现个人中心页面前端 0 概述 主要介绍了一下添加一个表(类)&#xff0c;及其CRUD的前端和后端的实现方式&#xff0c;介绍的是通用的方法。 后端的CRUD很好写&am…

5 - 无效的推文(高频 SQL 50 题基础版)

5. 无效的推文 知识点&#xff1a;计算字符长度 -- 查询所有无效推文的编号&#xff08;ID&#xff09; -- CHAR_LENGTH() 或 LENGTH() 函数来计算列中字符串的字符数。 -- 这两个函数的区别在于处理非 ASCII 字符时的行为&#xff1a; -- CHAR_LENGTH() 返回字符串的字符数&a…

可能是当下最能打的MCU图形库:LVGL

在讨论图形用户界面&#xff08;GUI&#xff09;库时&#xff0c;很多人会想到emWin、TouchGFX以及QT等。这些库虽然功能强大&#xff0c;但它们普遍存在一个共同的问题&#xff1a;对资源的需求较高&#xff0c;不适用于资源有限的微控制器&#xff08;MCU&#xff09;。有没有…

Spring Boot既打jar包又打war包如何做

你好&#xff0c;我是柳岸花开。 引言 在软件开发中&#xff0c;根据不同的部署需求&#xff0c;我们可能需要将应用打包成不同的格式。Spring Boot作为目前流行的Java应用开发框架&#xff0c;提供了一种简单的方式来打包应用。本文将介绍如何利用Maven Profiles在Spring Boot…

【linux】swap学习

在 Linux 系统中&#xff0c;swap 是一种用于扩展系统内存的技术。当物理内存&#xff08;RAM&#xff09;不足时&#xff0c;系统会将一部分不常用的内存数据移至 swap 空间&#xff0c;从而释放物理内存供其他程序使用。Swap 空间可以是一个单独的分区&#xff08;swap 分区&…

交互规范:苹果 iOS 11 设计规范

文件格式&#xff1a;PDF&#xff08;请与班主任联系获取原型文档&#xff09; 文件名称&#xff1a;苹果 iOS 11 设计规范 文件大小&#xff1a;29.2 MB 文档内容介绍 免费领取资料 添加班主任回复 “210421” 领取

数据结构_手撕七大排序(快排,归并,堆排,希尔,选择,插入,冒泡)

✨✨所属专栏&#xff1a;数据结构✨✨ ✨✨作者主页&#xff1a;嶔某✨✨ 排序的概念 排序&#xff1a;所谓排序&#xff0c;就是使一串记录&#xff0c;按照其中的某个或某些关键字的大小&#xff0c;递增或递减的排列起来的操作。 稳定性&#xff1a;假定在待排序的记录序…

企业数据安全管理容易忽视的关键点:云存储权限管控

云存储已经广泛应用于企业用户、教育领域、医疗领域以及政府和公共服务部门。具体应用场景包括文件共享、数据备份、在线课程、教学资源库、电子病历、医学影像、实验室数据、政务数据的集中管理和共享等。 云存储的优势非常明显&#xff1a; 可扩展性&#xff1a;云存储空间可…

Nginx漏洞解析及复现

Nginx漏洞 Nginx能做到正向代理、反向代理、负载均衡、HTTP服务器等&#xff0c;强大的功能不言而喻&#xff0c;但也伴随着使用 上的风险&#xff0c;深入理解Nginx的漏洞有助于创建安全的业务系统。 Nginx解析漏洞 漏洞原理 Nginx的解析漏洞的出现和Nginx的版本没有关系&…