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

Mysql Mybatis批量插入和批量更新数据

Mysql Mybatis批量插入和批量更新数据

  • 1、之前使用的批量更新方式
  • 2、本次使用的批量更新方式
  • 3、对应的批量更新xml
  • 4、批量插入的方法
  • 5、对应的批量插入xml

1、之前使用的批量更新方式

以前批量更新数据时,都是使用updateById一条一条 for循环更新,或者使用mybatis xml拼接多条update执行,如下面的sql,然后需要在jdbcurl中配置可以执行多条sql

update sys_user set name = 'aaa' where id = 'aaa';
update sys_user set name = 'bbb' where id = 'bbb';
update sys_user set name = 'ccc' where id = 'ccc';

2、本次使用的批量更新方式

mysql8.0以上支持CTE,使用CTE可以构建一个临时表出来我们可以将要更新的数据构建一个临时表,然后通过临时表和要更新的表关联进行更新,如下SQL,此方式只能指定字段更新或者全量更新,注意每次更新的数据不要太多,比如1000行就可以,自己测试过更新10000条数据需要25秒,因为数据库服务器不在本地,对性能影响较大。

with tmp1 as(select'aaa' as name,'aaa' as idUNION ALLselect'bbb' as name,'bbb' as idUNION ALLselect'ccc' as name,'ccc' as id
)
update sys_user,tmp1 set
sys_user.name = tmp1.name
where sys_user.id = tmp1.id

3、对应的批量更新xml

<update id="updateBatchHandle">WITH tmp1 AS (<foreach collection="list" item="item" separator=" UNION ALL ">SELECT #{item.name} AS name,#{item.id} AS id</foreach>)UPDATE sys_user, tmp1 SET sys_user.name= tmp1.nameWHERE sys_user.id = tmp1.id</update>

4、批量插入的方法

注意每次更新的数据不要太多,比如1000行就可以,自己测试过插入10000条数据需要10秒,因为数据库服务器不在本地,对性能影响较大。

insert into sys_user(id,name)
values
('aaa','aaa'),
('bbb','bbb'),
('ccc','ccc')

5、对应的批量插入xml

<insert id="insertBatchHandle">INSERT INTO sys_user (id,name)VALUES<foreach collection ="list" item="item" separator =",">(#{item.id},#{item.name})</foreach></insert>

通过编写代码生成模版,可以自动生成对应数据库的实体类、批量新增方法、批量更新方法

http://www.lqws.cn/news/542269.html

相关文章:

  • 设计模式 | 适配器模式
  • LaTeX下载与实践入门指南
  • 在 Dev Container 中实现 GUI 开发的解决方案
  • 报表控件stimulsoft教程:在报表、仪表板和 PDF 表单自动生成缩略图
  • SQL Server 中 GO 的作用
  • mPaaS 客户端诊断概述
  • CSS3实现同心圆效果
  • Go 语言中的 package 和 go modules
  • (二)YOLOV12部署训练
  • 人工智能-基础篇-1-人工智能介绍(发展史,技术体系,技术基础,主要领域,前景和挑战)
  • macOS,切换 space 失效,向右切换space(move right a space) 失效
  • Django导入错误:`from django.conf.urls import url` 的终极解决方案
  • 【机器学习深度学习】线性回归(基本模型训练流程)
  • 【AS32系列MCU调试教程】SPI调试的常见问题解析
  • 【AI助手】释放双手,基于Cursor Agent与Playwright MCP的浏览器自动化实战
  • Windows家庭版安装docker
  • 【Pandas】pandas DataFrame last_valid_index
  • 校企协同育人,智慧养老实训基地助力人才就业无忧
  • 【中文核心期刊推荐】《计算机工程与科学 》
  • MST56XXB/MST5650B/MST5033B 是一款耐高压的LDO芯片,针对中控设备,给MCU供电,60V的耐压,150mA
  • elastic-ai.creator开源程序是设计、训练和生成专门针对 FPGA 优化的神经网络
  • react-sequence-diagram时序图组件
  • 飞算科技依托 JavaAI 核心技术,打造企业级智能开发全场景方案
  • 【数据结构】B树的介绍及其实现C++
  • 带标签的 Docker 镜像打包为 tar 文件
  • React Native 如何实现拉起App
  • PHP在做爬虫时的解决方案
  • Franka 机器人在配置空间距离场实验中的突破性应用:从算法优化到动态场景适配
  • 无人机防护装置技术解析
  • 基于 Spring Boot + Vue 3的现代化社区团购系统