当前位置: 首页 > news >正文

技术应用:使用Spring Boot、MyBatis Plus和Dynamic DataSource实现多数据源

引言

在现代的软件开发中,许多应用程序需要同时访问多个数据库。例如,一个电子商务平台可能需要访问多个数据库来存储用户信息、产品信息和订单信息等。在这种情况下,使用多数据源是一种常见的解决方案,它允许我们在一个应用程序中管理多个数据库连接。

本文将介绍如何使用Spring Boot、MyBatis Plus和Dynamic DataSource实现多数据源。我们将学习如何配置和管理多个数据源,并在应用程序中使用它们执行数据库操作。(注:本文使用的Dynamic DataSource版本为4.2.0,参考文档:MyBatis Plus参考文档)

步骤

1. 添加依赖

首先,在您的Spring Boot项目中,您需要添加以下依赖:

		<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.3</version></dependency><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-generator</artifactId><version>3.5.3</version></dependency><dependency><groupId>com.baomidou</groupId><artifactId>dynamic-datasource-spring-boot-starter</artifactId><version>4.2.0</version></dependency>

2. 配置数据源

application.properties文件中配置您的数据源信息,例如:

spring:application:name: testdatasource:dynamic:primary: master #设置默认的数据源或者数据源组,默认值即为masterstrict: false #严格匹配数据源,默认false. true未匹配到指定数据源时抛异常,false使用默认数据源datasource:master:url: jdbc:mysql://xxxx:3306/test?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useAffectedRows=true&serverTimezone=GMT%2B8username: rootpassword: 12345678driver-class-name: com.mysql.jdbc.Driver # 3.2.0开始支持SPI可省略此配置sqlserver:url: jdbc:sqlserver://xxxxxx:1433;DatabaseName=testusername: testpassword: 12345678driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver

3. 创建Mapper接口和实体类

创建Mapper接口和对应的实体类,并使用@Mapper注解标记Mapper接口。

@DS("sqlserver")
@Mapper
public interface UserMapper {List<User> findAll();
}
@DS("sqlserver")
@Mapper
public interface ProductMapper {List<User> findAll();
}
@Data
public class User {private Long id;private String name;private Integer age;
}
@Data
public class Product{private Long id;private String name;
}

4. 编写业务逻辑

在您的Service层中编写业务逻辑,注入Mapper接口,直接使用即可。

@Service
public class TestService {@Autowiredprivate UserMapper userMapper;@Autowiredprivate ProductMapper productMapper;public void getAll() {userMapper.findAll();productMapper.findAll();}
}

5. 测试多数据源

编写单元测试来测试多数据源的功能,确保应用程序可以正确地访问主数据库和从数据库。

@SpringBootTest
public class TestServiceTest {@Autowiredprivate TestService testService;@Testpublic void testGetAll() {testService.getAll();}
}

总结

通过本文的学习,我们了解了如何使用Spring Boot、MyBatis Plus和Dynamic DataSource实现多数据源。我们学习了如何配置和管理多个数据源,并在应用程序中使用它们执行数据库操作。多数据源可以帮助我们更灵活地处理不同的数据库连接需求,使我们的应用程序更具可扩展性和可靠性。

相关文章:

技术应用:使用Spring Boot、MyBatis Plus和Dynamic DataSource实现多数据源

引言 在现代的软件开发中&#xff0c;许多应用程序需要同时访问多个数据库。例如&#xff0c;一个电子商务平台可能需要访问多个数据库来存储用户信息、产品信息和订单信息等。在这种情况下&#xff0c;使用多数据源是一种常见的解决方案&#xff0c;它允许我们在一个应用程序…...

C# Onnx 使用onnxruntime部署实时视频帧插值

目录 介绍 效果 模型信息 项目 代码 下载 C# Onnx 使用onnxruntime部署实时视频帧插值 介绍 github地址&#xff1a;https://github.com/google-research/frame-interpolation FILM: Frame Interpolation for Large Motion, In ECCV 2022. The official Tensorflow 2…...

编程笔记 Golang基础 016 数据类型:数字类型

编程笔记 Golang基础 016 数据类型&#xff1a;数字类型 1. 整数类型&#xff08;Integer Types&#xff09;a) 固定长度整数&#xff1a;b) 变长整数&#xff1a; 2. 浮点数类型&#xff08;Floating-Point Types&#xff09;3. 复数类型&#xff08;Complex Number Types&…...

一周学会Django5 Python Web开发-会话管理(CookiesSession)

锋哥原创的Python Web开发 Django5视频教程&#xff1a; 2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~共计26条视频&#xff0c;包括&#xff1a;2024版 Django5 Python we…...

QT之QString.arg输出固定位数

问题描述 我需要用QString输出一个固定位数的数字字符串。起初我的代码是这样&#xff1a; int img_num 1 auto new_name QString("%1.png").arg((int)img_num, 3, 10, 0); //最后一个参数用u0也是一样的 qDebug() << "new_name:" << new…...

Linux下各种压缩包的压缩与解压

tar 归档&#xff0c;不压缩&#xff0c;常见后缀 .tar # 将文件夹归档成为一个包 tar cf rootfs.tar rootfs # 将归档包还原为文件夹 tar xf rootfs.tar # 将归档包还原到路径 a/b/c tar xf rootfs.tar -C a/b/cgzip压缩&#xff0c; 常见后缀 .tar.gz .tgz # 压缩 tar czf …...

【ctfshow—web】——信息搜集篇1(web1~20详解)

ctfshow—web题解 web1web2web3web4web5web6web7web8web9web10web11web12web13web14web15web16web17web18web19web20 web1 题目提示 开发注释未及时删除 那就找开发注释咯&#xff0c;可以用F12来查看&#xff0c;也可以CtrlU直接查看源代码呢 就拿到flag了 web2 题目提示 j…...

GEE入门篇|遥感专业术语(实践操作4):光谱分辨率(Spectral Resolution)

目录 光谱分辨率&#xff08;Spectral Resolution&#xff09; 1.MODIS 2.EO-1 光谱分辨率&#xff08;Spectral Resolution&#xff09; 光谱分辨率是指传感器进行测量的光谱带的数量和宽度。 您可以将光谱带的宽度视为每个波段的波长间隔&#xff0c;在多个波段测量辐射亮…...

c++中模板的注意事项

1. 模板定义时&#xff0c;<>中的虚拟类型参数不能为空。(因为我们使用模板就是希望使用模拟类型代替其它的类型&#xff0c;如果我们不定义就没有意义了) 2. 无论是定义函数模板还是类模板&#xff0c;其实template定义与后面使用虚拟类型的类或者函数&#xff0c;是…...

【代码随想录python笔记整理】第十三课 · 链表的基础操作 1

前言:本笔记仅仅只是对内容的整理和自行消化,并不是完整内容,如有侵权,联系立删。 一、链表 在之前的学习中,我们接触到了字符串和数组(列表)这两种结构,它们具有着以下的共同点:1、元素按照一定的顺序来排列。2、可以通过索引来访问数组中的元素和字符串中的字符。由此,…...

JAVA工程师面试专题-《Mysql》篇

目录 一、基础 1、mysql可以使用多少列创建索引&#xff1f; 2、mysql常用的存储引擎有哪些 3、MySQL 存储引擎&#xff0c;两者区别 4、mysql默认的隔离级别 5、数据库三范式 6、drop、delete 与 truncate 区别&#xff1f; 7、IN与EXISTS的区别 二、索引 1、索引及索…...

@ 代码随想录算法训练营第4周(C语言)|Day22(二叉树)

代码随想录算法训练营第4周&#xff08;C语言&#xff09;|Day22&#xff08;二叉树&#xff09; Day22、二叉树&#xff08;包含题目 ● 235. 二叉搜索树的最近公共祖先 ● 701.二叉搜索树中的插入操作 ● 450.删除二叉搜索树中的节点 &#xff09; 235. 二叉搜索树的最近公…...

福特锐界2021plus 汽车保养手册

福特锐界2021plus汽车保养手册两页&#xff0c;零部件保养要求&#xff0c;电子版放这里方便查询&#xff1a;...

c++进阶路线

学完C后的进阶路线-初学者勿入【程序员Rock】_哔哩哔哩_bilibili 1.系统训练代码阅读能力 代码阅读工具&#xff1a; 1&#xff09;.Source Insight(阅读大型源码) 2&#xff09;.understand(整体代码模块关系构建) 3&#xff09;.SOURCETRAIL 代码阅读能力--千行级 嵌入…...

python中的类与对象(2)

目录 一. 类的基本语法 二. 类属性的应用场景 三. 类与类之间的依赖关系 &#xff08;1&#xff09;依赖关系 &#xff08;2&#xff09;关联关系 &#xff08;3&#xff09;组合关系 四. 类的继承 一. 类的基本语法 先看一段最简单的代码&#xff1a; class Dog():d_…...

Android横竖屏切换configChanges=“screenSize|orientation“避免activity销毁重建,Kotlin

Android横竖屏切换configChanges"screenSize|orientation"避免activity销毁重建&#xff0c;Kotlin 如果不在Androidmanifest.xml设置activity的&#xff1a; android:configChanges"screenSize|orientation" 那么&#xff0c;每次横竖屏切换activity都会…...

【C语言基础】:操作符详解(二)

文章目录 操作符详解一、上期扩展二、单目操作符三、逗号表达式四、下标访问[]、 函数调用()五、结构成员访问操作符六、操作符的属性&#xff1a;优先级、结合性1. 优先级2. 结合性 操作符详解 上期回顾&#xff1a;【C语言基础】&#xff1a;操作符详解(一) 一、上期扩展 …...

模型训练基本结构

project_name/ │ ├── data/ │ ├── raw/ # 存放原始数据 │ ├── processed/ # 存放预处理后的数据 │ └── splits/ # 存放数据集划分&#xff08;训练集、验证集、测试集等&#xff09; │ ├── noteboo…...

Redis 数据结构详解:底层实现与高效使用场景

String&#xff08;字符串&#xff09; 底层实现细节&#xff1a; 动态字符串&#xff08;SDS&#xff09;: SDS相比于C语言的原生字符串&#xff0c;提供了自动内存管理和预分配机制。当字符串长度增加时&#xff0c;SDS会预先分配额外的空间&#xff0c;以减少内存重新分配…...

Vue2:router-link的replace属性

一、情景说明 我们在用浏览器访问网站的时候 知道浏览器会记录访问的历史路径&#xff0c;从而&#xff0c;可以退回到之前的页面 那么&#xff0c;Vue项目中的路由组件&#xff0c;通过router-link跳转&#xff0c;也是可以退回的 这里&#xff0c;我们用replace来屏蔽退回的…...

基于算法竞赛的c++编程(28)结构体的进阶应用

结构体的嵌套与复杂数据组织 在C中&#xff0c;结构体可以嵌套使用&#xff0c;形成更复杂的数据结构。例如&#xff0c;可以通过嵌套结构体描述多层级数据关系&#xff1a; struct Address {string city;string street;int zipCode; };struct Employee {string name;int id;…...

零门槛NAS搭建:WinNAS如何让普通电脑秒变私有云?

一、核心优势&#xff1a;专为Windows用户设计的极简NAS WinNAS由深圳耘想存储科技开发&#xff0c;是一款收费低廉但功能全面的Windows NAS工具&#xff0c;主打“无学习成本部署” 。与其他NAS软件相比&#xff0c;其优势在于&#xff1a; 无需硬件改造&#xff1a;将任意W…...

java_网络服务相关_gateway_nacos_feign区别联系

1. spring-cloud-starter-gateway 作用&#xff1a;作为微服务架构的网关&#xff0c;统一入口&#xff0c;处理所有外部请求。 核心能力&#xff1a; 路由转发&#xff08;基于路径、服务名等&#xff09;过滤器&#xff08;鉴权、限流、日志、Header 处理&#xff09;支持负…...

【SpringBoot】100、SpringBoot中使用自定义注解+AOP实现参数自动解密

在实际项目中,用户注册、登录、修改密码等操作,都涉及到参数传输安全问题。所以我们需要在前端对账户、密码等敏感信息加密传输,在后端接收到数据后能自动解密。 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId...

【网络安全产品大调研系列】2. 体验漏洞扫描

前言 2023 年漏洞扫描服务市场规模预计为 3.06&#xff08;十亿美元&#xff09;。漏洞扫描服务市场行业预计将从 2024 年的 3.48&#xff08;十亿美元&#xff09;增长到 2032 年的 9.54&#xff08;十亿美元&#xff09;。预测期内漏洞扫描服务市场 CAGR&#xff08;增长率&…...

Nginx server_name 配置说明

Nginx 是一个高性能的反向代理和负载均衡服务器&#xff0c;其核心配置之一是 server 块中的 server_name 指令。server_name 决定了 Nginx 如何根据客户端请求的 Host 头匹配对应的虚拟主机&#xff08;Virtual Host&#xff09;。 1. 简介 Nginx 使用 server_name 指令来确定…...

[10-3]软件I2C读写MPU6050 江协科技学习笔记(16个知识点)

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16...

iview框架主题色的应用

1.下载 less要使用3.0.0以下的版本 npm install less2.7.3 npm install less-loader4.0.52./src/config/theme.js文件 module.exports {yellow: {theme-color: #FDCE04},blue: {theme-color: #547CE7} }在sass中使用theme配置的颜色主题&#xff0c;无需引入&#xff0c;直接可…...

根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的----NTFS源代码分析--重要

根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的 第一部分&#xff1a; 0: kd> g Breakpoint 9 hit Ntfs!ReadIndexBuffer: f7173886 55 push ebp 0: kd> kc # 00 Ntfs!ReadIndexBuffer 01 Ntfs!FindFirstIndexEntry 02 Ntfs!NtfsUpda…...

DBLP数据库是什么?

DBLP&#xff08;Digital Bibliography & Library Project&#xff09;Computer Science Bibliography是全球著名的计算机科学出版物的开放书目数据库。DBLP所收录的期刊和会议论文质量较高&#xff0c;数据库文献更新速度很快&#xff0c;很好地反映了国际计算机科学学术研…...