当前位置: 首页 > 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&…...

7.4.分块查找

一.分块查找的算法思想&#xff1a; 1.实例&#xff1a; 以上述图片的顺序表为例&#xff0c; 该顺序表的数据元素从整体来看是乱序的&#xff0c;但如果把这些数据元素分成一块一块的小区间&#xff0c; 第一个区间[0,1]索引上的数据元素都是小于等于10的&#xff0c; 第二…...

synchronized 学习

学习源&#xff1a; https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖&#xff0c;也要考虑性能问题&#xff08;场景&#xff09; 2.常见面试问题&#xff1a; sync出…...

Docker 运行 Kafka 带 SASL 认证教程

Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明&#xff1a;server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...

【第二十一章 SDIO接口(SDIO)】

第二十一章 SDIO接口 目录 第二十一章 SDIO接口(SDIO) 1 SDIO 主要功能 2 SDIO 总线拓扑 3 SDIO 功能描述 3.1 SDIO 适配器 3.2 SDIOAHB 接口 4 卡功能描述 4.1 卡识别模式 4.2 卡复位 4.3 操作电压范围确认 4.4 卡识别过程 4.5 写数据块 4.6 读数据块 4.7 数据流…...

中医有效性探讨

文章目录 西医是如何发展到以生物化学为药理基础的现代医学&#xff1f;传统医学奠基期&#xff08;远古 - 17 世纪&#xff09;近代医学转型期&#xff08;17 世纪 - 19 世纪末&#xff09;​现代医学成熟期&#xff08;20世纪至今&#xff09; 中医的源远流长和一脉相承远古至…...

PAN/FPN

import torch import torch.nn as nn import torch.nn.functional as F import mathclass LowResQueryHighResKVAttention(nn.Module):"""方案 1: 低分辨率特征 (Query) 查询高分辨率特征 (Key, Value).输出分辨率与低分辨率输入相同。"""def __…...

代码规范和架构【立芯理论一】(2025.06.08)

1、代码规范的目标 代码简洁精炼、美观&#xff0c;可持续性好高效率高复用&#xff0c;可移植性好高内聚&#xff0c;低耦合没有冗余规范性&#xff0c;代码有规可循&#xff0c;可以看出自己当时的思考过程特殊排版&#xff0c;特殊语法&#xff0c;特殊指令&#xff0c;必须…...

省略号和可变参数模板

本文主要介绍如何展开可变参数的参数包 1.C语言的va_list展开可变参数 #include <iostream> #include <cstdarg>void printNumbers(int count, ...) {// 声明va_list类型的变量va_list args;// 使用va_start将可变参数写入变量argsva_start(args, count);for (in…...

通过 Ansible 在 Windows 2022 上安装 IIS Web 服务器

拓扑结构 这是一个用于通过 Ansible 部署 IIS Web 服务器的实验室拓扑。 前提条件&#xff1a; 在被管理的节点上安装WinRm 准备一张自签名的证书 开放防火墙入站tcp 5985 5986端口 准备自签名证书 PS C:\Users\azureuser> $cert New-SelfSignedCertificate -DnsName &…...

在 Spring Boot 中使用 JSP

jsp&#xff1f; 好多年没用了。重新整一下 还费了点时间&#xff0c;记录一下。 项目结构&#xff1a; pom: <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://ww…...