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

对分库分表进行批量操作

对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基础了解&#xff1a;https://blog.csdn.net/m0_63297646/article/details/131894472 对批量操作案例&#xff1a;https://blog.csdn.net/m0_63297646/article/details/131843517 分为db0和db1两个库&#xff0c;每个库都有三张订单表&#xff0c;分表键根据年份…...

大数据组件-Flume集群环境的启动与验证

&#x1f947;&#x1f947;【大数据学习记录篇】-持续更新中~&#x1f947;&#x1f947; 个人主页&#xff1a;beixi 本文章收录于专栏&#xff08;点击传送&#xff09;&#xff1a;【大数据学习】 &#x1f493;&#x1f493;持续更新中&#xff0c;感谢各位前辈朋友们支持…...

【包过滤防火墙——iptables静态防火墙】的简单使用

文章目录 规则链的分类--五链处理的动作iptables常用参数和作用 防火墙就是堵和通的作用 iptables &#xff1a;包过滤防火墙&#xff0c;是内核防火墙netfilter的管理工具 核心&#xff1a;四表五链 规则链的分类–五链 在进行路由选择前处理的数据包&#xff1a;PREROUTIN…...

关于MySQL数据库版本不同导致表进行比较的时候报错illegal mix of collations...的问题

问题发生的原委 之前在项目开发的时候&#xff0c;我本地也建立了数据库用作开发库&#xff0c;我本地的数据库版本是5.7的&#xff0c;但是测试和生产库都是8.0的版本&#xff0c;我们定义的数据库字符集是utf8mb4&#xff0c;排序规则是utf8mb4_general_ci&#xff0c;前段时…...

进程、操作系统

文章目录 一、冯诺依曼体系&#xff08;Von Neumann Architecture&#xff09;1. 概述2. CPU 二、操作系统&#xff08;Operating System&#xff09;三、进程(process)/任务(task) 一、冯诺依曼体系&#xff08;Von Neumann Architecture&#xff09; 1. 概述 分类 CPU 中央处…...

hadoop学习:mapreduce入门案例四:partitioner 和 combiner

先简单介绍一下partitioner 和 combiner Partitioner类 用于在Map端对key进行分区 默认使用的是HashPartitioner 获取key的哈希值使用key的哈希值对Reduce任务数求模决定每条记录应该送到哪个Reducer处理自定义Partitioner 继承抽象类Partitioner&#xff0c;重写getPartiti…...

HTTP与SOCKS5的区别对比

在互联网世界中&#xff0c;服务器是一种重要的工具&#xff0c;可以帮助我们提高网络安全性等。今天&#xff0c;我们将重点关注两种常见的技术&#xff1a;HTTP和SOCKS5。让我们深入了解它们的工作原理、用途和优缺点&#xff0c;并通过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 an​p0​i∈n∑​pi​ 这是一步很巧妙的转化&#xff0c;神奇地利用了 & \& & 和 ∣ | ∣ 的性质&#xff0c;把求 a a a 的…...

python使用字典暴力解析wifi密码

前言 最近无wifi可用,搜到了很多高质量但是没有密码的WiFi,我在想应该可以用python调用常见的wifi字典包来暴力破解一下这些WiFi,也许可以成功 原理 使用pip install pywifi命令安装pywifi 使用它调用本机网卡,设置wifi加密方式,对字典包扫描密码逐个尝试 扫描失败的密码会被…...

java八股文面试[多线程]——synchronized锁升级详细流程

偏向锁 偏向锁是JDK6中的重要引进&#xff0c;因为HotSpot作者经过研究实践发现&#xff0c;在大多数情况下&#xff0c;锁不仅不存在多线程竞争&#xff0c;而且总是由同一线程多次获得&#xff0c;为了让线程获得锁的代价更低&#xff0c;引进了偏向锁。 偏向锁是在单线程执…...

ui网页设计实训心得

ui网页设计实训心得篇一 通过这次实训对这门课程的学习&#xff0c;做好网页&#xff0c;并不是一件容易的事&#xff0c;它包括网页的选题、 内容采集整理、 图片的处理、 页面的排版设置、 背景及其整套网页的色调等很多东西。 所以我得出一下总结&#xff1a; 一、 准备资…...

论文阅读_扩散模型_DDPM

英文名称: Denoising Diffusion Probabilistic Models 中文名称: 去噪扩散概率模型 论文地址: http://arxiv.org/abs/2006.11239 代码地址1: https://github.com/hojonathanho/diffusion &#xff08;论文对应代码 tensorflow&#xff09; 代码地址2: https://github.com/AUTOM…...

菜鸟教程《Python 3 教程》笔记(15):数据结构

菜鸟教程《Python 3 教程》笔记&#xff08;15&#xff09; 15 数据结构15.1 将列表当作队列使用15.2 遍历技巧 笔记带有个人侧重点&#xff0c;不追求面面俱到。 15 数据结构 出处&#xff1a; 菜鸟教程 - Python3 数据结构 15.1 将列表当作队列使用 在列表的最后添加或者弹…...

CH05_介绍重构名录

重构的记录格式 每个重构手法都有5个部分。 名称&#xff08;name&#xff09; 要建造一个重构词汇表&#xff0c;名称是很重要的。 速写&#xff08;sketch&#xff09; 名称之后是一个简单的速写&#xff08;sketch&#xff09;&#xff1b;这部分可以帮助你更快找到你所…...

1、Nginx 简介

文章目录 1、Nginx 简介1.1 Nginx 概述1.2 Nginx 作为 web 服务器1.3 正向代理1.4 反向代理1.5 负载均衡1.6 动静分离 【尚硅谷】尚硅谷Nginx教程由浅入深 志不强者智不达&#xff1b;言不信者行不果。 1、Nginx 简介 1.1 Nginx 概述 Nginx (“engine x”) 是一个高性能的 HT…...

C++之——宏

宏&#xff08;Macro&#xff09;是一种在编程语言中使用的符号&#xff0c;通常用于将一段代码片段替换为另一段代码。宏在代码中起到了预处理的作用&#xff0c;它们在编译代码之前被处理和展开。宏通常用于简化代码、提高代码的可读性、实现代码重用以及引入编译时常量。 在…...

代码随想录打卡—day56—【编辑距离】— 9.2 编辑距离系列

1 583. 两个字符串的删除操作 583. 两个字符串的删除操作 【注意点1】感觉和下面这题很像。就是一模一样&#xff0c;return变一下就是。 1143. 最长公共子序列 【注意点2】注意这题和day55的最后一题的区别&#xff0c;本题求的是最大长度&#xff0c;那题求的是组合方式。…...

uni-app app端.m3u8类型流的播放

1.开发环境&#xff1a;HBuilderX3.8.7、uni-app、vue2.0、view2.0、uni-ui 2.实现通过web-view 嵌入H5页面&#xff0c;进行视频流自动播放。 注意事项&#xff1a; 如果只是在android端可以直接使用.flv格式的视频流&#xff1b; 如果App需要支持ios就可以考虑一下播放.m3u8格…...

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…...

Spring Boot 实现流式响应(兼容 2.7.x)

在实际开发中&#xff0c;我们可能会遇到一些流式数据处理的场景&#xff0c;比如接收来自上游接口的 Server-Sent Events&#xff08;SSE&#xff09; 或 流式 JSON 内容&#xff0c;并将其原样中转给前端页面或客户端。这种情况下&#xff0c;传统的 RestTemplate 缓存机制会…...

工程地质软件市场:发展现状、趋势与策略建议

一、引言 在工程建设领域&#xff0c;准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具&#xff0c;正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...

06 Deep learning神经网络编程基础 激活函数 --吴恩达

深度学习激活函数详解 一、核心作用 引入非线性:使神经网络可学习复杂模式控制输出范围:如Sigmoid将输出限制在(0,1)梯度传递:影响反向传播的稳定性二、常见类型及数学表达 Sigmoid σ ( x ) = 1 1 +...

【数据分析】R版IntelliGenes用于生物标志物发现的可解释机器学习

禁止商业或二改转载&#xff0c;仅供自学使用&#xff0c;侵权必究&#xff0c;如需截取部分内容请后台联系作者! 文章目录 介绍流程步骤1. 输入数据2. 特征选择3. 模型训练4. I-Genes 评分计算5. 输出结果 IntelliGenesR 安装包1. 特征选择2. 模型训练和评估3. I-Genes 评分计…...

return this;返回的是谁

一个审批系统的示例来演示责任链模式的实现。假设公司需要处理不同金额的采购申请&#xff0c;不同级别的经理有不同的审批权限&#xff1a; // 抽象处理者&#xff1a;审批者 abstract class Approver {protected Approver successor; // 下一个处理者// 设置下一个处理者pub…...

解析两阶段提交与三阶段提交的核心差异及MySQL实现方案

引言 在分布式系统的事务处理中&#xff0c;如何保障跨节点数据操作的一致性始终是核心挑战。经典的两阶段提交协议&#xff08;2PC&#xff09;通过准备阶段与提交阶段的协调机制&#xff0c;以同步决策模式确保事务原子性。其改进版本三阶段提交协议&#xff08;3PC&#xf…...

jdbc查询mysql数据库时,出现id顺序错误的情况

我在repository中的查询语句如下所示&#xff0c;即传入一个List<intager>的数据&#xff0c;返回这些id的问题列表。但是由于数据库查询时ID列表的顺序与预期不一致&#xff0c;会导致返回的id是从小到大排列的&#xff0c;但我不希望这样。 Query("SELECT NEW com…...

客户案例 | 短视频点播企业海外视频加速与成本优化:MediaPackage+Cloudfront 技术重构实践

01技术背景与业务挑战 某短视频点播企业深耕国内用户市场&#xff0c;但其后台应用系统部署于东南亚印尼 IDC 机房。 随着业务规模扩大&#xff0c;传统架构已较难满足当前企业发展的需求&#xff0c;企业面临着三重挑战&#xff1a; ① 业务&#xff1a;国内用户访问海外服…...

相关类相关的可视化图像总结

目录 一、散点图 二、气泡图 三、相关图 四、热力图 五、二维密度图 六、多模态二维密度图 七、雷达图 八、桑基图 九、总结 一、散点图 特点 通过点的位置展示两个连续变量之间的关系&#xff0c;可直观判断线性相关、非线性相关或无相关关系&#xff0c;点的分布密…...