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

,多数据源+Mybatisplus + Sharding JDBC同一库中分表

水平分表是在同一个数据库内,把同一个表的数据按一定规则拆到多个表中,多数据源采用 mybatis-plus的dynamic-datasource 分库分表采用sharding-jdbc 数据库连接池管理是alibaba的druid-spring-boot-starter

同一个数据库内分表

目录

1.数据库表

2.配置

3.引入的jar包

4.数据库操作

5.以下是可运行的例子

6.参考


1.数据库表

数据库:

表结构

CREATE TABLE `t_order_4` (`order_id` bigint NOT NULL COMMENT '订单id',`price` decimal(10,2) NOT NULL COMMENT '订单价格',`user_id` bigint NOT NULL COMMENT '下单用户id',`status` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '订单状态',`create_time` datetime DEFAULT NULL,PRIMARY KEY (`order_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 ROW_FORMAT=DYNAMIC;

在配置多数据源的情况下分表:

2.配置

application.yaml配置:

--- #################### 数据库相关配置 ####################
spring:# 数据源配置项autoconfigure:exclude:- com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure # 排除 Druid 的自动配置,使用 dynamic-datasource-spring-boot-starter 配置多数据源
#  main:
#    allow-bean-definition-overriding: truedatasource:druid: # Druid 【监控】相关的全局配置web-stat-filter:enabled: truestat-view-servlet:enabled: trueallow: # 设置白名单,不填则允许所有访问url-pattern: /druid/*login-username: # 控制台管理用户名和密码login-password:filter:stat:enabled: truelog-slow-sql: true # 慢 SQL 记录slow-sql-millis: 100merge-sql: truewall:config:multi-statement-allow: truedynamic: # 多数据源配置druid: # Druid 【连接池】相关的全局配置initial-size: 5 # 初始连接数min-idle: 10 # 最小连接池数量max-active: 20 # 最大连接池数量max-wait: 600000 # 配置获取连接等待超时的时间,单位:毫秒time-between-eviction-runs-millis: 60000 # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位:毫秒min-evictable-idle-time-millis: 300000 # 配置一个连接在池中最小生存的时间,单位:毫秒max-evictable-idle-time-millis: 900000 # 配置一个连接在池中最大生存的时间,单位:毫秒validation-query: SELECT 1 FROM DUAL # 配置检测连接是否有效test-while-idle: truetest-on-borrow: falsetest-on-return: falseprimary: masterdatasource:master:name: ruoyi-vue-prourl: jdbc:mysql://127.0.0.1:3306/${spring.datasource.dynamic.datasource.master.name}?allowMultiQueries=true&useUnicode=true&useSSL=false&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&autoReconnect=true&nullCatalogMeansCurrent=true # MySQL Connector/J 8.X 连接的示例#          url: jdbc:mysql://127.0.0.1:3306/${spring.datasource.dynamic.datasource.master.name}?useSSL=false&allowPublicKeyRetrieval=true&useUnicode=true&characterEncoding=UTF-8&serverTimezone=CTT # MySQL Connector/J 5.X 连接的示例#          url: jdbc:postgresql://127.0.0.1:5432/${spring.datasource.dynamic.datasource.slave.name} # PostgreSQL 连接的示例#          url: jdbc:oracle:thin:@127.0.0.1:1521:xe # Oracle 连接的示例#          url: jdbc:sqlserver://127.0.0.1:1433;DatabaseName=${spring.datasource.dynamic.datasource.master.name} # SQLServer 连接的示例username: rootpassword: root#          username: sa#          password: JSm:g(*%lU4ZAkz06cd52KqT3)i1?H7Wslave: # 模拟从库,可根据自己需要修改name: ruoyi-vue-prourl: jdbc:mysql://127.0.0.1:3306/${spring.datasource.dynamic.datasource.slave.name}?allowMultiQueries=true&useUnicode=true&useSSL=false&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&autoReconnect=true&nullCatalogMeansCurrent=true # MySQL Connector/J 8.X 连接的示例#          url: jdbc:mysql://127.0.0.1:3306/${spring.datasource.dynamic.datasource.slave.name}?useSSL=false&allowPublicKeyRetrieval=true&useUnicode=true&characterEncoding=UTF-8&serverTimezone=CTT # MySQL Connector/J 5.X 连接的示例#          url: jdbc:postgresql://127.0.0.1:5432/${spring.datasource.dynamic.datasource.slave.name} # PostgreSQL 连接的示例#          url: jdbc:oracle:thin:@127.0.0.1:1521:xe # Oracle 连接的示例#          url: jdbc:sqlserver://127.0.0.1:1433;DatabaseName=${spring.datasource.dynamic.datasource.slave.name} # SQLServer 连接的示例username: rootpassword: root# username: sa# password: JSm:g(*%lU4ZAkz06cd52KqT3)i1?H7W#shardingsphere相关配置# 分库分表配置#shardingsphere相关配置shardingsphere:datasource:names: m1   #配置库的名字,随意m1:   #配置目前m1库的数据源信息type: com.alibaba.druid.pool.DruidDataSourcedriverClassName: com.mysql.jdbc.Driverurl: jdbc:mysql://localhost:3306/ruoyi-vue-pro?useUnicode=true&characterEncoding=UTF-8&useSSL=falseusername: rootpassword: rootsharding:tables:system_dept:  # 指定t_order表的数据分布情况,配置数据节点actualDataNodes: m1.system_dept_$->{1..8}tableStrategy: #分表策略, 可选项有 inline, standard, complex, hint, noneinline:   # 指定t_order表的分片策略,分片策略包括分片键和分片算法  #inline(行表达式分片策略)- 根据单一分片键进行精确分片shardingColumn: idalgorithmExpression: system_dept_$->{id % 8 + 1}#          keyGenerator:   # 指定t_order表的主键生成策略为SNOWFLAKE#            column: order_id  #指定主键#            type: SNOWFLAKE  #主键生成策略为SNOWFLAKEdefault-data-source-name: m1 #不使用分表分库策略的数据源props:sql:show: true

3.引入的jar包

        <-- 这个jar放到mybatisjar包前面--><dependency><groupId>org.mybatis</groupId><artifactId>mybatis-typehandlers-jsr310</artifactId><version>1.0.1</version></dependency><dependency><groupId>org.apache.shardingsphere</groupId><artifactId>sharding-jdbc-spring-boot-starter</artifactId><version>4.0.0-RC1</version></dependency>

4.数据库操作

正常操作就行,不用加@DS制定数据源

5.以下是可运行的例子

springboot2.7.17,mybatisplus3.5.3.1,dynamic-datasource3.5.1

源码:

https://download.csdn.net/download/xiaobijia/88516542

  1. 6.参考

  【Sharding-JDBC】(一) 整合mybatis-plus 水平分表_mybatisplus水平分表-CSDN博客

多数据源+数据库分库分表_多数据源分库分表_Amarone的博客-CSDN博客

Cause: java.sql.SQLFeatureNotSupportedException: getObject with type-CSDN博客

新版SpringBoot集成sharding-jdbc报shardingsphere.shardingjdbc.jdbc.unsupported.AbstractUnsupportedOperationConnection.isValid解决方案 - Laeni - 博客园 (cnblogs.com)

相关文章:

,多数据源+Mybatisplus + Sharding JDBC同一库中分表

水平分表是在同一个数据库内&#xff0c;把同一个表的数据按一定规则拆到多个表中,多数据源采用 mybatis-plus的dynamic-datasource 分库分表采用sharding-jdbc 数据库连接池管理是alibaba的druid-spring-boot-starter 同一个数据库内分表 目录 1.数据库表 2.配置 3.引入的…...

Docsify 和 Hugo 之间的选型

对文档的编译&#xff0c;目前的发布方案是越来越注重 MD 的编辑和发布。 针对其他 Wiki 的选择&#xff0c;MD 文件的编辑通常会保留修改记录&#xff0c;同时不依赖中央数据库和其他类型的 Web 应用服务。 随着各大云平台的支持&#xff0c;包括 GitHub Page 和 Google 的 …...

第二十章 ObjectScript 应用程序中的数值计算 - 转换:十进制到 $DOUBLE

文章目录 第二十章 ObjectScript 应用程序中的数值计算 - 转换&#xff1a;十进制到 $DOUBLE 转换&#xff1a;十进制到 $DOUBLE转换&#xff1a;$DOUBLE 到十进制$DECIMAL(x)$DECIMAL(x, n) 转换&#xff1a;十进制到字符串 第二十章 ObjectScript 应用程序中的数值计算 - 转…...

C语言【趣编程】我们怎样便捷输出空心的金字塔

目录 1问题&#xff1a; 2解题思路&#xff1a; 3代码如下&#xff1a; 4代码运行结果如下图所示&#xff1a; 5总结&#xff1a; r如若后续有不会的问题&#xff0c;可以和我私聊&#xff1b; 1问题&#xff1a; 2解题思路&#xff1a; 方法&#xff1a;找规律&#xff0…...

《JavaScript设计模式》笔记 - - - 超全设计模式概览

该篇文章用于记录阅读《JavaScript设计模式》后归纳的读书笔记&#xff0c;主要以代码形式进行展示&#xff0c;用于快速回顾对应设计模式的代码构造 1.面向对象编程 1.使用对象收编变量 优点&#xff1a;避免全局变量冲突与覆盖 缺点&#xff1a;不利于复用 var CheckObj {c…...

浅谈Vue 3的响应式对象: ref和reactive

Vue 3是一个流行的前端框架&#xff0c;它引入了一些新的特性来提高开发者的体验和性能。其中&#xff0c;响应式对象是 Vue 3 中一个非常重要的概念。在这篇博客中&#xff0c;我们将重点介绍 Vue 3 中的响应式对象&#xff0c;并深入探讨其中的 ref 和 reactive。 引言 在现…...

怎么学编程效率高,编程练习网站编程软件下载,中文编程开发语言工具下载

怎么学编程效率高&#xff0c;编程练习网站编程软件下载&#xff0c;中文编程开发语言工具下载 给大家分享一款中文编程工具&#xff0c;零基础轻松学编程&#xff0c;不需英语基础&#xff0c;编程工具可下载。 这款工具不但可以连接部分硬件&#xff0c;而且可以开发大型的…...

Alphago Zero的原理及实现:Mastering the game of Go without human knowledge

近年来强化学习算法广泛应用于游戏对抗上&#xff0c;通用的强化学习模型一般包含了Actor模型和Critic模型&#xff0c;其中Actor模型根据状态生成下一步动作&#xff0c;而Critic模型估计状态的价值&#xff0c;这两个模型通过相互迭代训练&#xff08;该过程称为Generalized …...

STM32 堆栈空间分布

参考 运行时访问__initial_sp和__heap_base 无RTOS时的情况 在以上配置的情况下&#xff0c;生成工程。在工程的startup.s文件中&#xff0c;由如下代码&#xff1a; Stack_Size EQU 0x400AREA STACK, NOINIT, READWRITE, ALIGN3 __Stack_top ; 自己添加 Stack_Mem…...

小程序制作(超详解!!!)第十五节 自动随机变化的三色旗

1.例题描述 设计一个小程序&#xff0c;开始时界面上显示一个三色旗和一个按钮&#xff0c;当点击按钮时&#xff0c;三色旗的颜色会发生随机变化&#xff0c;即使不点击按钮&#xff0c;三色旗的颜色也会每隔一定时间自动发生变化。 2.index.wxml <view class"box&…...

MySQL_主从复制_环境搭建

MySQL主从复制配置 CentOS 7 配置 阿里云 yum 源 sudo mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup sudo wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo sudo yum clean all sudo yum makeca…...

Linux 设置静态IP(Ubuntu 20.04/18.04)

以Ubuntu20.04示例 第一步&#xff1a;查看当前网络信息 ifconfig 本机网卡名为&#xff1a;ens32&#xff0c;IP地址为&#xff1a;192.168.15.133&#xff0c;子网掩码为&#xff1a;255.255.255.0 第二步&#xff1a;查看当前网关信息 route -n 网关地址为&#xff1a;1…...

计网----累积应答,TCP的流量控制--滑动窗口,粘包问题,心跳机制,Nagle算法,拥塞控制,TCP协议总结,UDP和TCP对比,中介者模式

计网----累积应答&#xff0c;TCP的流量控制–滑动窗口&#xff0c;粘包问题&#xff0c;心跳机制&#xff0c;Nagle算法&#xff0c;拥塞控制&#xff0c;TCP协议总结&#xff0c;UDP和TCP对比&#xff0c;中介者模式 一.累积应答 1.什么是累计应答 每次发一些包&#xff0…...

OpenCV 直方图和归一化

直方图可以反映图片的整体统计信息, 使用函数 CalcHist() 实现. 但CalcHist() 统计出的数量信息和图像大小相关, 如果要剔除图像大小因素, 需要做归一化处理, 归一化处理后的信息, 反映出各个颜色值得占比情况, 这样更方便不同size图像做对比, 归一化的函数为 Normalize(). ///…...

Flink架构

1、Apache Flink集群的核心架构&#xff1a; 1、client&#xff08;作业客户端&#xff09;&#xff1a;提交任务的地方叫做客户端 2、JobManager&#xff08;作业管理器&#xff09;&#xff1a;作用是用于管理集群中任务 3、TaskManager&#xff08;任务管理器&#xff09;&a…...

Packet Tracer路由器连接终端设备怎么配置?

在Packet Tracer中配置一台路由器和三台终端设备可以帮助你建立一个简单的局域网&#xff0c;以下是配置的基本步骤&#xff1a; 打开Packet Tracer&#xff0c;从左侧设备栏中拖拽一个路由器和三个终端设备到工作区。 连接设备&#xff1a;使用网线将路由器的端口与每台终端设…...

评估APP网页小程序代码UI开发H5估价师怎么评估开发精确研发价格?

作为一名应用程序开发评估师&#xff0c;可能涉及到的主要任务是为特定的应用程序提供估算开发成本和所需时间预测。为了为一个应用程序更准确地评估价格&#xff0c;须遵循以下几个步骤&#xff1a; 问: 如何让一个App更好、更精确地评估出价格&#xff1f; 答: 以下是一个可…...

16 Linux 内核定时器

一、Linux 时间管理和内核定时器简介 1. 内核时间管理简介 Linux 内核中有大量的函数需要时间管理&#xff0c;比如周期性的调度程序、延时程序、定时器等。 硬件定时器提供时钟源&#xff0c;时钟源的频率可以设置&#xff0c;设置好以后就周期性的产生定时中断&#xff0c;系…...

C++11 shared_ptr类型智能指针学习

智能指针和普通指针的用法类似,但是智能指针可以在适当时机自动释放分配的内存。 C++11有三种类型的智能指针,shared_ptr、unique_ptr 以及 weak_ptr; 先学习shared_ptr类型; shared_ptr<T> 的定义位于<memory>头文件,并位于 std 命名空间中; T 表示指针指…...

网络流量分类概述

1. 什么是网络流量&#xff1f; 一条网络流量是指在一段特定的时间间隔之内&#xff0c;通过网络中某一个观测点的所有具有相同五元组(源IP地址、目的IP地址、传输层协议、源端口和目的端口)的分组的集合。 比如(10.134.113.77&#xff0c;47.98.43.47&#xff0c;TLSv1.2&…...

10.YOLOv5 纯文本技术详解:从原理演进到全流程可复现实践

YOLO(You Only Look Once)系列是当前工业界和学术界应用最广泛的目标检测算法之一。其核心思想是将目标检测任务转化为一个端到端的回归问题,在单个神经网络中同时预测边界框和类别概率。 本文从零开始,系统讲解YOLO的演进历程、核心原理,并提供一个从数据准备、模型训练到…...

解放你的桌面:用PinWin告别窗口切换的烦恼

解放你的桌面&#xff1a;用PinWin告别窗口切换的烦恼 【免费下载链接】PinWin Pin any window to be always on top of the screen 项目地址: https://gitcode.com/gh_mirrors/pin/PinWin 你是否曾经为了同时查看视频教程和编写代码而频繁切换窗口&#xff1f;是否在写…...

别再只用2D地图了!手把手教你用Vue3+ECharts GL打造可交互的3D中国地图(附完整代码和天空盒资源)

突破平面边界&#xff1a;用Vue3与ECharts GL构建沉浸式3D地理可视化方案 当数据可视化遇上三维空间&#xff0c;地图不再只是冰冷的平面轮廓。想象一下&#xff0c;你的用户可以通过鼠标拖拽360度旋转查看地形起伏&#xff0c;点击省份时区域会动态凸起响应&#xff0c;飞鱼线…...

Qwen3.5-4B-AWQ一文详解:3GB显存跑通全能力大模型的部署逻辑

Qwen3.5-4B-AWQ一文详解&#xff1a;3GB显存跑通全能力大模型的部署逻辑 1. 模型概述 Qwen3.5-4B-AWQ-4bit是阿里云通义千问团队推出的轻量级大语言模型&#xff0c;通过4bit AWQ量化技术实现了惊人的低资源占用。这个模型在保持强大能力的同时&#xff0c;将显存需求压缩到仅…...

CANoe新手必看:从Intel到Motorola,一次搞懂DBC文件里的信号字节序

CANoe实战指南&#xff1a;彻底掌握DBC文件中的字节序奥秘 当你在深夜调试CAN总线信号时&#xff0c;突然发现仪表盘显示的车速比实际值少了256倍&#xff0c;或者雨刮器信号莫名其妙地反向工作——这很可能就是字节序在作祟。作为汽车电子工程师的"暗语"&#xff0c…...

GVINS实战解析:如何用自录的ROS Bag数据替换官方数据集进行真机测试?

GVINS实战进阶&#xff1a;用自采集ROS Bag替换官方数据集的完整指南 当你第一次在官方数据集上成功运行GVINS时&#xff0c;那种兴奋感可能还记忆犹新。但很快&#xff0c;一个更实际的问题浮出水面&#xff1a;如何让这套强大的GNSS-视觉-惯性紧耦合系统处理我自己的传感器数…...

DeepSeek V4利好国产算力,超节点成为弯道超车的技术底座

超节点架构以系统级工程补齐单点算力短板&#xff0c;满足了从万亿参数大模型训练到规模化AI推理的多样化需求。2026年4月24日&#xff0c;DeepSeek发布了新一代旗舰模型DeepSeek V4&#xff0c;将总参数推至1.6万亿&#xff0c;首次将百万Token上下文打成标配&#xff0c;并实…...

玄机网络安全靶场:GeoServer XXE 任意文件读取(CVE-2025-58360)

解题报告&#xff1a;GeoServer XXE 任意文件读取&#xff08;CVE-2025-58360&#xff09; 平台&#xff1a; 玄机 (xj.edisec.net) 题目 ID&#xff1a; 443 难度&#xff1a; 简单 类型&#xff1a; 渗透 积分&#xff1a; 300 分 完成状态&#xff1a; ✅ 已完成 Flag&#…...

告别手动标注!用Label Studio ML Backend + SAM模型,5分钟搞定图像分割预标注

5分钟实现图像分割预标注&#xff1a;Label Studio ML Backend与SAM模型实战指南 在计算机视觉项目的生命周期中&#xff0c;数据标注往往是最耗时且成本高昂的环节。传统手工标注一幅图像的分割掩膜平均需要10-15分钟&#xff0c;而面对医疗影像分析、自动驾驶场景理解等专业领…...

Caldera 推出 Metalayer 生态工具 拓展 Layer 生态能力

Caldera 近日正式推出 Metalayer Token Launcher&#xff0c;这是首个支持跨链代币部署的无代码解决方案, 为项目方提供一套无需代码的代币发行工具&#xff0c;帮助团队快速创建并部署 MetaTokens&#xff0c;进一步降低链上经济系统启动与资产发行的技术门槛。 Metalayer To…...