【SpringBoot】mybaitsPlus的多数据源配置
📝个人主页:五敷有你
🔥系列专栏:SpringBoot
⛺️稳重求进,晒太阳
mybatisPlus的多数据源配置
适用于多种场景:纯粹多库、 读写分离、 一主多从、 混合模式等
目前我们就来模拟一个纯粹多库的一个场景,其他场景类似
场景说明:
我们创建两个库,分别为: mybatis_plus(以前的库不动)与mybatis_plus_1 (新建),将
mybatis_plus库的product表移动到mybatis_plus_1库,这样每个库一张表,通过一个测试用例 分别获取用户数据与商品数据,如果获取到说明多库模拟成功
1、创建数据库及表
创建数据库mybatis_plus_1和表product
CREATE DATABASE `mybatis_plus_1` /*!40100 DEFAULT CHARACTER SET utf8mb4 */; use `mybatis_plus_1`;
CREATE TABLE product
(
id BIGINT(20) NOT NULL COMMENT '主键ID',
name VARCHAR(30) NULL DEFAULT NULL COMMENT '商品名称 ',
price INT(11) DEFAULT 0 COMMENT '价格 ',
version INT(11) DEFAULT 0 COMMENT '乐观锁版本号 ',
PRIMARY KEY (id));
添加测试数据
INSERT INTO product (id, NAME, price) VALUES (1, '外星人笔记本 ', 100);
删除mybatis_plus库product表
use mybatis_plus; DROP TABLE IF EXISTS product;
2、引入依赖
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>dynamic-datasource-spring-boot-starter</artifactId>
<version>3.5.0</version>
</dependency>
3、配置多数据源
说明:注释掉之前的数据库连接,添加新配置
spring:
# 配置数据源信息
datasource:
dynamic:
# 设置默认的数据源或者数据源组 ,默认值即为master
primary: master
# 严格匹配数据源 ,默认false.true未匹配到指定数据源时抛异常 ,false使用默认数据源
strict: false
datasource:
master:
url: jdbc:mysql://localhost:3306/mybatis_plus?characterEncoding=utf- 8&useSSL=false
driver-class-name: com.mysql.cj.jdbc.Driver
username: root
password: 123456
slave_1:
url: jdbc:mysql://localhost:3306/mybatis_plus_1?characterEncoding=utf- 8&useSSL=false
driver-class-name: com.mysql.cj.jdbc.Driver
username: root
password: 123456
4、创建用户service
@DS("master") //指定所操作的数据源
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
}
5、创建商品service
@DS("slave_1")
@Service
public class ProductServiceImpl extends ServiceImpl<ProductMapper, Product> implements ProductService {
}
6、测试
@Autowired
private UserService userService;
@Autowired
private ProductService productService;@Test
public void testDynamicDataSource(){
System.out.println(userService.getById(1L));
System.out.println(productService.getById(1L));
}
结果:
1、都能顺利获取对象,则测试成功
2、如果我们实现读写分离,将写操作方法加上主库数据源,读操作方法加上从库数据源,自动切换,是不是就能实现读写分离?
注意事项
可以设置默认的数据源或者数据源组 ,默认值即为master
# strict:严格匹配数据源 ,默认false。true未匹配到指定数据源时抛异常 ,false使用默认数据源 如下, 二者都没有使用@DS("数据源名称"),就是没有数据源,当为false时,就是会默认使用master,所以报错是mybatis_plus.t_product不存在,而不是数据源错误。 当为true时,就严格@DS中的数据源,没有就报错
相关文章:

【SpringBoot】mybaitsPlus的多数据源配置
📝个人主页:五敷有你 🔥系列专栏:SpringBoot ⛺️稳重求进,晒太阳 mybatisPlus的多数据源配置 适用于多种场景:纯粹多库、 读写分离、 一主多从、 混合模式等 目前我们就来模拟一个纯粹多…...
安卓Java面试题 1-10
🔥 1、简述Android的4大组件是哪些,它们的作用?🔥 Android的4大组件 1:Activity:Activity是Android程序与用户交互的窗口,是Android构造块中最基本的一种,它需要为保持各界面的状态…...

强化学习中动作价值函数和状态价值函数的联系区别?
在强化学习中,动作价值函数(Q函数)和状态价值函数(V函数)都是值函数,用于评估在不同状态或状态动作对下的值。它们之间存在联系,但有一些区别: 动作价值函数(Q函数&#…...

Vue-Router路由介绍和使用
vue属于单页面应用,路由就是根据浏览器路径不同,用不同的试图组件替换这个页面内容 开启路由功能 如图在创建项目时候勾选rouler 这样创建好的项目就有路由功能 下一步 不同的访问路径 展示不同的页面内容 路由配置 路由连接组件 浏览器会解析为超链接 …...

Waves 14 Complete:后期混音效果全套插件,打造专业级音质体验
Waves 14 Complete,这款专为Mac和Windows平台打造的后期混音效果全套插件,将为您的音乐创作之旅增添一抹亮色。Waves 14 Complete以其丰富的功能和出色的性能,赢得了众多音乐制作人的青睐。它集合了众多高质量的音频处理插件,涵盖…...

DC-2靶机详解
写写自己打DC-2的过程 使用工具 kali DC-2的靶机下载地址为:https://www.vulnhub.com/entry/dc-2,311/ 环境配置。 Kali和DC-2都设置为NAT模式,都为仅主机模式也可以。 信息收集 arp-scan -l nmap -sn 192.168.236.0/24 获取靶机ip:192.16…...

个人项目介绍4:三维园区篇
个人项目介绍: 地图铁路线路篇 地球卫星篇 火车站篇 三维园区篇 项目需求: 1.按比例全景显示三维园区 2.精确显示园区内设备设施 3.实时显示设备报警信息 4.显示园区内摄像监控设备,并可点击显示监控视频流 5.显示园区内的重大危险源和风险分布 …...

哪些公司在招聘GIS开发?为什么?
之前我们给大家整理汇总了WebGIS在招岗位的一些特点,包括行业、学历、工作经验等。WebGIS招聘原来看重这个!整理了1300多份岗位得出来的干货! 很多同学好奇,这些招GIS开发的都是哪些公司?主要是做什么的? …...

电脑自带dll修复在哪里,dll修复工具一键修复dll丢失问题
xinput1_3.dll文件是一个Windows操作系统中的动态链接库(DLL)文件,它是微软DirectX软件开发包的一部分,主要用于支持游戏控制器和其他输入设备的交互。这个文件是DirectInput API的一个组件,DirectInput是DirectX中处理…...
电商数据分析15——电商平台上的产品推荐系统优化策略
目录 写在开头1. 产品推荐系统的作用1.1 提升用户购物体验1.2 增加销售额和转化率 2. 数据分析在推荐系统中的应用2.1 用户行为数据分析2.2 个性化推荐算法优化2.3 多样性和新颖性的平衡 3. 推荐系统优化的实践案例3.1 案例分享:利用机器学习提升推荐准确度3.1.1. 背…...

华硕AMD主板开启TPM2.0支持
目录 配置问题设置开启 Firmware TPM开启 Security Device Support保存设置 检查 配置 主板:TUF Gaming B550m-e Wifi BIOS: 3402 问题 今天更新Win11,告诉我不支持 TPM 2.0,导致更新失败。 网上搜这个问题,基本只提供了…...

Linux - 进程控制
1、进程创建 1.1、fork函数初识 在linux中fork函数时非常重要的函数,它从已存在进程中创建一个新进程。新进程为子进程,而原进程为父进程; #include <unistd.h> pid_t fork(void); 返回值:自进程中返回0,父进…...
redis一些概念知识
一、redis是什么 Redis是一种非关系型数据库(NoSQL),它主要以键值对存储数据。与传统的关系型数据库相比,Redis更注重内存操作和高性能,常被用作缓存系统或分布式存储系统。 以简单的比喻来解释Redis,可以…...
01.AJAX 概念和 axios 使用
01.AJAX 概念和 axios 使用 1. 什么是 AJAX ? 使用浏览器的 XMLHttpRequest 对象 与服务器通信 浏览器网页中,使用 AJAX技术(XHR对象)发起获取省份列表数据的请求,服务器代码响应准备好的省份列表数据给前端,前端拿…...

外包干了一周,技术明显倒退。。。。。
先说一下自己的情况,本科生,2019年我通过校招踏入了南京一家软件公司,开始了我的职业生涯。那时的我,满怀热血和憧憬,期待着在这个行业中闯出一片天地。然而,随着时间的推移,我发现自己逐渐陷入…...
JSON数据格式,后台@RequestBody实体类接收不到数据-首字母小写,第二个字母大写造成的参数问题
原因: 1.驼峰模式出问题了,当驼峰前只有一个小写字母,然后后面是大写字母,就会出现接收不到数据的情况。 2.只有一个首字母大写的字段也会失效。 比如参数:aTest 那么后端实体定义的aTest接收不到该参数值ÿ…...

MySQL——性能调优
性能调优(重要) SQL 优化的目的 减少磁盘 IO:尽可能避免全表扫描、尽量使用索引、尽量使用覆盖索引减少回表操作减少 CPU 和内存的消耗,尽可能减少排序、分组、去重之类的操作,尽量减少事务持有锁的时间 优化途径&…...

Java中super关键字作用及解析
在 Java 中,super关键字主要有以下作用: 在子类构造方法中调用父类的构造方法:使用super关键字可以在子类的构造方法中显式调用父类的构造方法,以便继承父类的属性和行为。语法如下:这样可以确保父类的构造方法被正确…...
【LeetCode打卡】Day25|216.组合总和III、17.电话号码的字母组合
学习目标: 216.组合总和III 17.电话号码的字母组合 学习内容: 216.组合总和III 题目链接 &&文章讲解 找出所有相加之和为 n 的 k 个数的组合,且满足下列条件: 只使用数字1到9每个数字 最多使用一次 返回所有可能的有效…...

JS函数
目录 1.Function声明 2.匿名函数 3.函数表达式 4.箭头函数 5.构造函数 个人版JS函数使用: 函数的声明:函数如果有return则返回的是 return 后面的值,如果函数没有有return 声明方式一: 声明方式二:变量名声明…...

RocketMQ延迟消息机制
两种延迟消息 RocketMQ中提供了两种延迟消息机制 指定固定的延迟级别 通过在Message中设定一个MessageDelayLevel参数,对应18个预设的延迟级别指定时间点的延迟级别 通过在Message中设定一个DeliverTimeMS指定一个Long类型表示的具体时间点。到了时间点后…...
可靠性+灵活性:电力载波技术在楼宇自控中的核心价值
可靠性灵活性:电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中,电力载波技术(PLC)凭借其独特的优势,正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据,无需额外布…...

大数据零基础学习day1之环境准备和大数据初步理解
学习大数据会使用到多台Linux服务器。 一、环境准备 1、VMware 基于VMware构建Linux虚拟机 是大数据从业者或者IT从业者的必备技能之一也是成本低廉的方案 所以VMware虚拟机方案是必须要学习的。 (1)设置网关 打开VMware虚拟机,点击编辑…...

CentOS下的分布式内存计算Spark环境部署
一、Spark 核心架构与应用场景 1.1 分布式计算引擎的核心优势 Spark 是基于内存的分布式计算框架,相比 MapReduce 具有以下核心优势: 内存计算:数据可常驻内存,迭代计算性能提升 10-100 倍(文档段落:3-79…...
AI编程--插件对比分析:CodeRider、GitHub Copilot及其他
AI编程插件对比分析:CodeRider、GitHub Copilot及其他 随着人工智能技术的快速发展,AI编程插件已成为提升开发者生产力的重要工具。CodeRider和GitHub Copilot作为市场上的领先者,分别以其独特的特性和生态系统吸引了大量开发者。本文将从功…...

蓝桥杯3498 01串的熵
问题描述 对于一个长度为 23333333的 01 串, 如果其信息熵为 11625907.5798, 且 0 出现次数比 1 少, 那么这个 01 串中 0 出现了多少次? #include<iostream> #include<cmath> using namespace std;int n 23333333;int main() {//枚举 0 出现的次数//因…...

SAP学习笔记 - 开发26 - 前端Fiori开发 OData V2 和 V4 的差异 (Deepseek整理)
上一章用到了V2 的概念,其实 Fiori当中还有 V4,咱们这一章来总结一下 V2 和 V4。 SAP学习笔记 - 开发25 - 前端Fiori开发 Remote OData Service(使用远端Odata服务),代理中间件(ui5-middleware-simpleproxy)-CSDN博客…...
SQL慢可能是触发了ring buffer
简介 最近在进行 postgresql 性能排查的时候,发现 PG 在某一个时间并行执行的 SQL 变得特别慢。最后通过监控监观察到并行发起得时间 buffers_alloc 就急速上升,且低水位伴随在整个慢 SQL,一直是 buferIO 的等待事件,此时也没有其他会话的争抢。SQL 虽然不是高效 SQL ,但…...

AirSim/Cosys-AirSim 游戏开发(四)外部固定位置监控相机
这个博客介绍了如何通过 settings.json 文件添加一个无人机外的 固定位置监控相机,因为在使用过程中发现 Airsim 对外部监控相机的描述模糊,而 Cosys-Airsim 在官方文档中没有提供外部监控相机设置,最后在源码示例中找到了,所以感…...

Golang——9、反射和文件操作
反射和文件操作 1、反射1.1、reflect.TypeOf()获取任意值的类型对象1.2、reflect.ValueOf()1.3、结构体反射 2、文件操作2.1、os.Open()打开文件2.2、方式一:使用Read()读取文件2.3、方式二:bufio读取文件2.4、方式三:os.ReadFile读取2.5、写…...