对分库分表进行批量操作
对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格…...
戴森球计划工厂蓝图架构深度解析:构建高效星际生产线的核心策略
戴森球计划工厂蓝图架构深度解析:构建高效星际生产线的核心策略 【免费下载链接】FactoryBluePrints 游戏戴森球计划的**工厂**蓝图仓库 项目地址: https://gitcode.com/GitHub_Trending/fa/FactoryBluePrints FactoryBluePrints 项目作为戴森球计划游戏中最…...
Rshell框架实战:红队内网渗透的信道管理与双平台协同
1. 这不是“教你怎么黑”,而是还原一次真实红队作业的完整切片Rshell框架——这个名字在渗透测试圈子里不算陌生,但真正把它用透、用稳、用出生产级效果的人,远比想象中少。我见过太多人把Rshell当成一个“带图形界面的msfvenomnc组合包”&am…...
Unity开发者为何转向VSCode:效率提升26倍的工程实践
1. 为什么我三年前就彻底卸载了Visual Studio——一个Unity老手的真实效率账在Unity项目里打开Visual Studio,等它加载完所有C#项目、符号、IntelliSense、Rider插件、Resharper缓存、NuGet包索引……这个过程平均耗时47秒——这是我用Stopwatch在2021年到2023年连续…...
麻雀AI助手Akagi:免费实时分析工具,5分钟提升雀魂游戏水平 [特殊字符]️
麻雀AI助手Akagi:免费实时分析工具,5分钟提升雀魂游戏水平 🀄️ 【免费下载链接】Akagi 支持雀魂、天鳳、麻雀一番街、天月麻將,能夠使用自定義的AI模型實時分析對局並給出建議,內建Mortal AI作為示例。 Supports Majs…...
3分钟搞定3D视频转2D:终极免费工具让普通设备也能体验VR沉浸感
3分钟搞定3D视频转2D:终极免费工具让普通设备也能体验VR沉浸感 【免费下载链接】VR-reversal VR-Reversal - Player for conversion of 3D video to 2D with optional saving of head tracking data and rendering out of 2D copies. 项目地址: https://gitcode.c…...
工业机器视觉工控机选型指南:从硬件配置到现场调试
1. 产品定位与核心价值解析在工业自动化领域,尤其是机器视觉应用场景中,稳定、可靠且性能强劲的硬件平台是整套系统能够7x24小时无间断运行的基石。朗锐智科推出的这款机器视觉工控机,从其核心配置来看,精准地瞄准了中高端视觉检测…...
Excel MCP Server:革命性的无Excel数据处理引擎
Excel MCP Server:革命性的无Excel数据处理引擎 【免费下载链接】excel-mcp-server A Model Context Protocol server for Excel file manipulation 项目地址: https://gitcode.com/gh_mirrors/ex/excel-mcp-server 在数据处理领域,传统Excel依赖…...
动态阻抗匹配增益单元:破解脑电前端 “弱信号放大” 难题
通过上一篇文章的学习,相信大家对自研脑机接口模拟前端的整体框架有了一定的了解,其中动态阻抗匹配增益单元是解决 “微弱脑电信号无法稳定放大” 这一核心难题的关键。今天这篇文章,蔡哥就带大家来聊聊这项技术的设计背景、实现思路和实际效…...
手把手教你用STM32CubeMX和HAL库搞定PAJ7620U2手势传感器(附完整初始化代码)
STM32CubeMX与HAL库实战:PAJ7620U2手势传感器全流程开发指南 当你第一次拿到PAJ7620U2手势传感器模块时,可能会被它强大的功能所吸引——它能识别9种手势动作,包括上下左右滑动、前后推拉、顺时针/逆时针旋转以及挥手动作。但随之而来的问题是…...
揭秘PlayAI语音中台三大核心壁垒:声学模型蒸馏技术、行业术语动态热更新引擎、信创环境全栈适配方案(附某央企POC压测原始数据)
更多请点击: https://kaifayun.com 第一章:PlayAI企业级语音解决方案全景概览 PlayAI 是面向中大型企业的端到端语音智能平台,深度融合ASR(自动语音识别)、TTS(文本转语音)、NLU(自…...
