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

Java实现Mysql批量插入与更新

第一、批量插入语句

    @Insert({"<script>","INSERT INTO TABLE_NAME ("+ "ID,"+ "IS_DELETE,"+ "GMT_CREATE,"+ "GMT_MODIFIED"+ ")VALUES","<foreach collection = 'list' item = 'item' separator = ','>","(" + "#{item.id},"+ "0,"+ "now(),"+ "now()"+ ")","</foreach>","</script>"})

第二、批量更新语句

    @Update("<script>"+ " UPDATE TABLE_NAME SET "+ " <trim prefix='OWNER_ID =case' suffix='end,'> "+" <foreach collection='list' item='item'> "+ " when ID = #{item.id} then #{item.ownerId} "+ " </foreach> "+" </trim> "+ " GMT_MODIFIED = NOW() "+ " WHERE ID in "+" <foreach collection='list' index='index' item='item' separator=',' open='(' close=')'> "+" #{item.id} "+" </foreach> "+ " </script>")

第三,工具类

public final class BatchHandler {private static final int BATCH_OPERATE_SIZE = 500;public static <T> void doBatch(List<T> coll,Consumer<Collection<T>> consumer) {doBatch(coll, BATCH_OPERATE_SIZE, consumer);}/*** @param coll:             分片集合* @param batchOperateSize: 分片size* @param consumer:         批量消费过程* @description 集合分片处理*/public static <T> void doBatch(List<T> coll,Integer batchOperateSize,Consumer<Collection<T>> consumer) {for (int i = 0; i < coll.size(); i += batchOperateSize) {if (i + batchOperateSize > coll.size()) {consumer.accept(coll.subList(i, coll.size()));} else {consumer.accept(coll.subList(i, i + batchOperateSize));}}}
}

第四、调用方式

BatchHandler.doBatch(list, paramList -> service.batchAdd((List<Object>) paramList));

欢迎大家积极留言交流学习心得,点赞的人最美丽!

http://www.lryc.cn/news/371831.html

相关文章:

  • 李沐团队发布Higgs-Llama-3-70B,角色扮演专用模型
  • 2024年护网行动全国各地面试题汇总(4)作者:————LJS
  • 秋招突击——6/11——复习{(树形DP)树的最长路径、电话号码的字母组合}——新作{重复序列中前最小的数字}
  • Lua与C交互API接口总结
  • DT浏览器很好用
  • RabbitMQ实践——在管理后台测试消息收发功能
  • vscode卡顿问题处理(vue-official插件)
  • 使用Kube-Bench对Kubernetes进行安全检测
  • STM32开发过程中碰到的问题总结 - 1
  • hiberfil.sys文件在Windows系统作用
  • 智能制造前沿:ARMxy工控机在机器人控制中
  • 【CS.AI】AI引领编程新时代:深度探索GitHub Copilot
  • Java:爬虫htmlunit抓取a标签
  • 电池包断路单元DBU的预充电电阻应用案例
  • 车载网络安全指南 系统层面开发阶段(六)
  • Julia 文件读写
  • 为何总是会失败
  • 【PB案例学习笔记】-21小大写金额转换
  • 12.实战私有数据微调ChatGLM3
  • PHP地方门户分类信息网站源码讯客分类信息系统源码(含手机版)
  • 设计模式 —— 观察者模式
  • 光纤跳线(又称光纤连接器)的种类
  • 探索Ubuntu:从入门到精通
  • SpringMVC-基础架构
  • 《Windows API每日一练》4.1 GDI绘图
  • SQL Server 安装后,服务器再改名,造成名称不一致,查询并修改数据库服务器真实名称
  • 单例模式、工厂模式 c++关键字 static
  • 基于文本和图片输入的3D数字人化身生成技术解析
  • C语言 | Leetcode C语言题解之第150题逆波兰表达式求值
  • API安全性的重要性及实施策略