对分库分表进行批量操作
对ShardingJDBC基础了解:https://blog.csdn.net/m0_63297646/article/details/131894472
对批量操作案例:https://blog.csdn.net/m0_63297646/article/details/131843517

分为db0和db1两个库,每个库都有三张订单表,分表键根据年份【year】,分库键根据店铺id【store_id】

在db0中存在两张学生信息表,分表键根据年份【year】
一、插入
插入时,对象要带有分库/分表键的值,shardingJdbc会进行改写。一次性插入。
1、分表未分库

2、分库分表

二、更新
代码简单,但是会增加逻辑。
db0和db1都会执行,且因为店铺id集合包含两个库的数据,所有的订单都会在两个库重复执行。
建议:在stream所有店铺id时,可以加一个distinct,避免大量重复数据。
@Test
void test15() {//分库分表键全作为参数,则全部都要执行一遍。List<OrderDO> orderDOList = orderMapper.selectList(null);System.out.println(Objects.isNull(orderDOList));List<Long> collect = orderDOList.stream().map(obj -> obj.getStoreId()).distinct().collect(Collectors.toList());List<Long> collect1 = orderDOList.stream().map(obj -> obj.getId()).distinct().collect(Collectors.toList());orderMapper.updateBatchOrderDoList(collect,collect1,CommonUtil.getYearList());
}void updateBatchOrderDoList(@Param("store_id_list")List<Long> storeIdList,@Param("order_id_list")List<Long> orderIdList,@Param("year_list")List<Integer> yearList);<update id="updateBatchOrderDoList">UPDATEt_order boSETno='2222222'<where><foreach collection="year_list" separator="," item="item" open=" AND bo.year IN (" close=")">#{item}</foreach><foreach collection="order_id_list" item="item" separator="," open=" AND bo.id IN (" close=")">#{item}</foreach><foreach collection="store_id_list" item="item" separator="," open=" AND bo.store_id IN (" close=")">#{item}</foreach></where>
</update>
1、分库分表
根据分库键【store_id】分为两个list,分别更新。
public static <T> void splitAndProcess(List<T> sourceList, Predicate<T> condition, Consumer<List<T>> action) {List<T> matchingItems = new ArrayList<>();List<T> nonMatchingItems = new ArrayList<>();for (T obj : sourceList) {if (condition.test(obj)) {matchingItems.add(obj);} else {nonMatchingItems.add(obj);}}action.accept(matchingItems);action.accept(nonMatchingItems); }splitAndProcess(orderDOList, obj -> obj.getStoreId() % 2 == 0, splitList -> {orderMapper.batchUpdate(splitList); });
注意:如果使用下面这种sql方式,需要更新0库1库两个库的数据,路由只会进入一个更新,导致没有所有的数据更新。
<update id="batchUpdate"><foreach collection="list" item="vo" index="idx" separator=";">update<if test="idx > 0">t_order_${vo.year}</if><if test="idx == 0">t_order</if>set no=3where id = #{vo.id} and year = #{vo.year} and store_id=#{vo.storeId}</foreach>
</update>
2、分表未分库
如果是统一的数据更新,比如student表,更新所有学生的name为‘张三’,可以直接用updateById。
使用sql语句话
<update id="updateStduent">updates_stduentsetage = age + 1<where>id=#{id}<foreach collection="year_list" item="item" separator="," open=" AND year IN (" close=")">#{item}</foreach></where>
</update>
相关文章:
对分库分表进行批量操作
对ShardingJDBC基础了解:https://blog.csdn.net/m0_63297646/article/details/131894472 对批量操作案例:https://blog.csdn.net/m0_63297646/article/details/131843517 分为db0和db1两个库,每个库都有三张订单表,分表键根据年份…...
大数据组件-Flume集群环境的启动与验证
🥇🥇【大数据学习记录篇】-持续更新中~🥇🥇 个人主页:beixi 本文章收录于专栏(点击传送):【大数据学习】 💓💓持续更新中,感谢各位前辈朋友们支持…...
【包过滤防火墙——iptables静态防火墙】的简单使用
文章目录 规则链的分类--五链处理的动作iptables常用参数和作用 防火墙就是堵和通的作用 iptables :包过滤防火墙,是内核防火墙netfilter的管理工具 核心:四表五链 规则链的分类–五链 在进行路由选择前处理的数据包:PREROUTIN…...
关于MySQL数据库版本不同导致表进行比较的时候报错illegal mix of collations...的问题
问题发生的原委 之前在项目开发的时候,我本地也建立了数据库用作开发库,我本地的数据库版本是5.7的,但是测试和生产库都是8.0的版本,我们定义的数据库字符集是utf8mb4,排序规则是utf8mb4_general_ci,前段时…...
进程、操作系统
文章目录 一、冯诺依曼体系(Von Neumann Architecture)1. 概述2. CPU 二、操作系统(Operating System)三、进程(process)/任务(task) 一、冯诺依曼体系(Von Neumann Architecture) 1. 概述 分类 CPU 中央处…...
hadoop学习:mapreduce入门案例四:partitioner 和 combiner
先简单介绍一下partitioner 和 combiner Partitioner类 用于在Map端对key进行分区 默认使用的是HashPartitioner 获取key的哈希值使用key的哈希值对Reduce任务数求模决定每条记录应该送到哪个Reducer处理自定义Partitioner 继承抽象类Partitioner,重写getPartiti…...
HTTP与SOCKS5的区别对比
在互联网世界中,服务器是一种重要的工具,可以帮助我们提高网络安全性等。今天,我们将重点关注两种常见的技术:HTTP和SOCKS5。让我们深入了解它们的工作原理、用途和优缺点,并通过Python代码示例学习如何使用它们。 HT…...
在阿里云请求发短信接口去掉证书验证
composer require alibabacloud/dysmsapi-20170525 2.0.23 cURL error 60: SSL certificate problem: unable to get local issuer certificate (see https://curl.haxx.se/libcurl/c/libcurl-errors.html) for https://dysmsapi.aliyuncs.com/?PhoneNumbers 两种方法 第一…...
k8s里pv pvc configmap
通过storageClassName 将PV 和PVC 关联起来。 [rootk8-master home]# cat /home/npm-pvc.yaml kind: PersistentVolumeClaim apiVersion: v1 metadata:name: npm-repository-pvcnamespace: jenkins spec:accessModes:- ReadWriteManyresources:requests:storage: 50GistorageC…...
【Atcoder】 [ARC144D] AND OR Equation
题目链接 Atcoder方向 Luogu方向 题目解法 考虑满足条件 2 2 2 的形式为 a n p 0 ∑ i ∈ n p i a_np_0\sum\limits_{i\in n}p_i anp0i∈n∑pi 这是一步很巧妙的转化,神奇地利用了 & \& & 和 ∣ | ∣ 的性质,把求 a a a 的…...
python使用字典暴力解析wifi密码
前言 最近无wifi可用,搜到了很多高质量但是没有密码的WiFi,我在想应该可以用python调用常见的wifi字典包来暴力破解一下这些WiFi,也许可以成功 原理 使用pip install pywifi命令安装pywifi 使用它调用本机网卡,设置wifi加密方式,对字典包扫描密码逐个尝试 扫描失败的密码会被…...
java八股文面试[多线程]——synchronized锁升级详细流程
偏向锁 偏向锁是JDK6中的重要引进,因为HotSpot作者经过研究实践发现,在大多数情况下,锁不仅不存在多线程竞争,而且总是由同一线程多次获得,为了让线程获得锁的代价更低,引进了偏向锁。 偏向锁是在单线程执…...
ui网页设计实训心得
ui网页设计实训心得篇一 通过这次实训对这门课程的学习,做好网页,并不是一件容易的事,它包括网页的选题、 内容采集整理、 图片的处理、 页面的排版设置、 背景及其整套网页的色调等很多东西。 所以我得出一下总结: 一、 准备资…...
论文阅读_扩散模型_DDPM
英文名称: Denoising Diffusion Probabilistic Models 中文名称: 去噪扩散概率模型 论文地址: http://arxiv.org/abs/2006.11239 代码地址1: https://github.com/hojonathanho/diffusion (论文对应代码 tensorflow) 代码地址2: https://github.com/AUTOM…...
菜鸟教程《Python 3 教程》笔记(15):数据结构
菜鸟教程《Python 3 教程》笔记(15) 15 数据结构15.1 将列表当作队列使用15.2 遍历技巧 笔记带有个人侧重点,不追求面面俱到。 15 数据结构 出处: 菜鸟教程 - Python3 数据结构 15.1 将列表当作队列使用 在列表的最后添加或者弹…...
CH05_介绍重构名录
重构的记录格式 每个重构手法都有5个部分。 名称(name) 要建造一个重构词汇表,名称是很重要的。 速写(sketch) 名称之后是一个简单的速写(sketch);这部分可以帮助你更快找到你所…...
1、Nginx 简介
文章目录 1、Nginx 简介1.1 Nginx 概述1.2 Nginx 作为 web 服务器1.3 正向代理1.4 反向代理1.5 负载均衡1.6 动静分离 【尚硅谷】尚硅谷Nginx教程由浅入深 志不强者智不达;言不信者行不果。 1、Nginx 简介 1.1 Nginx 概述 Nginx (“engine x”) 是一个高性能的 HT…...
C++之——宏
宏(Macro)是一种在编程语言中使用的符号,通常用于将一段代码片段替换为另一段代码。宏在代码中起到了预处理的作用,它们在编译代码之前被处理和展开。宏通常用于简化代码、提高代码的可读性、实现代码重用以及引入编译时常量。 在…...
代码随想录打卡—day56—【编辑距离】— 9.2 编辑距离系列
1 583. 两个字符串的删除操作 583. 两个字符串的删除操作 【注意点1】感觉和下面这题很像。就是一模一样,return变一下就是。 1143. 最长公共子序列 【注意点2】注意这题和day55的最后一题的区别,本题求的是最大长度,那题求的是组合方式。…...
uni-app app端.m3u8类型流的播放
1.开发环境:HBuilderX3.8.7、uni-app、vue2.0、view2.0、uni-ui 2.实现通过web-view 嵌入H5页面,进行视频流自动播放。 注意事项: 如果只是在android端可以直接使用.flv格式的视频流; 如果App需要支持ios就可以考虑一下播放.m3u8格…...
visual studio 2022更改主题为深色
visual studio 2022更改主题为深色 点击visual studio 上方的 工具-> 选项 在选项窗口中,选择 环境 -> 常规 ,将其中的颜色主题改成深色 点击确定,更改完成...
【论文笔记】若干矿井粉尘检测算法概述
总的来说,传统机器学习、传统机器学习与深度学习的结合、LSTM等算法所需要的数据集来源于矿井传感器测量的粉尘浓度,通过建立回归模型来预测未来矿井的粉尘浓度。传统机器学习算法性能易受数据中极端值的影响。YOLO等计算机视觉算法所需要的数据集来源于…...
2025 后端自学UNIAPP【项目实战:旅游项目】6、我的收藏页面
代码框架视图 1、先添加一个获取收藏景点的列表请求 【在文件my_api.js文件中添加】 // 引入公共的请求封装 import http from ./my_http.js// 登录接口(适配服务端返回 Token) export const login async (code, avatar) > {const res await http…...
从零实现STL哈希容器:unordered_map/unordered_set封装详解
本篇文章是对C学习的STL哈希容器自主实现部分的学习分享 希望也能为你带来些帮助~ 那咱们废话不多说,直接开始吧! 一、源码结构分析 1. SGISTL30实现剖析 // hash_set核心结构 template <class Value, class HashFcn, ...> class hash_set {ty…...
GitHub 趋势日报 (2025年06月08日)
📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...
EtherNet/IP转DeviceNet协议网关详解
一,设备主要功能 疆鸿智能JH-DVN-EIP本产品是自主研发的一款EtherNet/IP从站功能的通讯网关。该产品主要功能是连接DeviceNet总线和EtherNet/IP网络,本网关连接到EtherNet/IP总线中做为从站使用,连接到DeviceNet总线中做为从站使用。 在自动…...
HTML前端开发:JavaScript 常用事件详解
作为前端开发的核心,JavaScript 事件是用户与网页交互的基础。以下是常见事件的详细说明和用法示例: 1. onclick - 点击事件 当元素被单击时触发(左键点击) button.onclick function() {alert("按钮被点击了!&…...
佰力博科技与您探讨热释电测量的几种方法
热释电的测量主要涉及热释电系数的测定,这是表征热释电材料性能的重要参数。热释电系数的测量方法主要包括静态法、动态法和积分电荷法。其中,积分电荷法最为常用,其原理是通过测量在电容器上积累的热释电电荷,从而确定热释电系数…...
在Mathematica中实现Newton-Raphson迭代的收敛时间算法(一般三次多项式)
考察一般的三次多项式,以r为参数: p[z_, r_] : z^3 (r - 1) z - r; roots[r_] : z /. Solve[p[z, r] 0, z]; 此多项式的根为: 尽管看起来这个多项式是特殊的,其实一般的三次多项式都是可以通过线性变换化为这个形式…...
根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的----NTFS源代码分析--重要
根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的 第一部分: 0: kd> g Breakpoint 9 hit Ntfs!ReadIndexBuffer: f7173886 55 push ebp 0: kd> kc # 00 Ntfs!ReadIndexBuffer 01 Ntfs!FindFirstIndexEntry 02 Ntfs!NtfsUpda…...
