mybatis批量同时更新或者插入数据

可以使用 MySQL 的 INSERT INTO … ON DUPLICATE KEY UPDATE 语句来实现批量插入更新。
假设有一个表 ams_storageCargo,其主键为 id,可以将数据列表存储在一个 List 对象中,然后使用 MyBatis 的 foreach 标签进行循环插入,同时使用 INSERT INTO … ON DUPLICATE KEY UPDATE 语句进行重复记录的更新操作。
示例代码如下:

<insert id="batchInsertOrUpdate" parameterType="java.util.List">INSERT INTO ams_storageCargo(totalAmount, number, totalWeight, leaveOrEnter, storeName, id, time, enterpriseID, warehouse, enterpriseName, channelID, storeCode)VALUES<foreach collection="list" item="item" separator=",">(#{item.totalAmount}, #{item.number}, #{item.totalWeight}, #{item.leaveOrEnter}, #{item.storeName}, #{item.id}, #{item.time}, #{item.enterpriseID}, #{item.warehouse}, #{item.enterpriseName}, #{item.channelID}, #{item.storeCode})</foreach>ON DUPLICATE KEY UPDATEtotalAmount = totalAmount + VALUES(totalAmount),totalWeight = totalWeight + VALUES(totalWeight)
</insert>

其中, 标签的 id 属性为 batchInsertOrUpdate,parameterType 属性指定参数类型为 java.util.List。VALUES 子句中的字段和值都使用占位符 #{item.xxx} 来代替,其中 item 表示列表中的对象,xxx 表示对象中对应的字段名。
ON DUPLICATE KEY UPDATE 子句用于处理重复记录的更新操作,其中使用了 MySQL 的 VALUES() 函数来获取插入时的值。注意,ON DUPLICATE KEY UPDATE 子句中的字段名必须使用反引号 ` 符号括起来,否则可能会导致语法错误。
在实际使用过程中,需要根据实际情况调整 SQL 语句,并进行性能测试和优化。同时,也需要注意数据的一致性和正确性,避免因为重复记录的更新操作导致数据出现异常。

优缺点

使用 INSERT INTO … ON DUPLICATE KEY UPDATE 语句进行批量插入更新是一种常见的做法,可以减少与数据库的交互次数,提高插入数据的效率。这种方法在处理大批量数据时比较有效。
然而,在实际使用过程中,需要根据具体场景进行优化和调整。如果数据量较大,可能会导致数据库连接超时或占用过多的内存空间,这时可以考虑将插入操作拆分成多个较小的批次进行处理,或者使用分页查询的方式进行批量插入。
同时,也需要注意数据的一致性和正确性。如果使用 INSERT INTO … ON DUPLICATE KEY UPDATE 语句进行更新操作时,需要确保更新的字段对应的值是正确的,否则可能会导致数据异常。可以通过限制更新字段的范围、增加数据校验等方法来避免这种情况。
总的来说,使用 INSERT INTO … ON DUPLICATE KEY UPDATE 语句进行批量插入更新是一种有效的做法,但需要根据实际情况进行优化和调整,并保证数据的一致性和正确性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/599138.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

工作中人员离岗识别摄像机

工作中人员离岗识别摄像机是一种基于人工智能技术的智能监控设备&#xff0c;能够实时识别员工离岗状态并进行记录。这种摄像机通常配备了高清摄像头、深度学习算法和数据处理系统&#xff0c;可以精准地监测员工的行为&#xff0c;提高企业的管理效率和安全性。 工作中人员离岗…

OpenCV 安装概述

OpenCV 核心团队的软件包 每个版本都会发布使用默认参数和最新编译器构建的适用于 Android、iOS 和 Windows 的包&#xff0c;它们不包含opencv_contrib模块。 GitHub 版本&#xff1a;Releases opencv/opencv GitHubSourceForge.net&#xff1a; OpenCV - Browse Files at…

在Go语言中处理HTTP请求中的Cookie

在Web开发中&#xff0c;Cookie是一种常用的技术&#xff0c;用于在客户端存储数据&#xff0c;并在随后的请求中发送回服务器。Go语言的标准库提供了强大的支持来处理HTTP请求中的Cookie。 首先&#xff0c;让我们了解如何在Go语言中设置Cookie。以下是一个简单的示例&#x…

MySQL基础笔记(4)DQL数据查询语句

DQL用于查找数据库中存放的记录~ 目录 一.语法 二.基础查询 1.查询多个字段 2.设置别名 3.去除重复记录 三.条件查询 1.基础语法 2.常见条件 四.分组查询 1.聚合函数 2.语法 五.排序查询 六.分页查询 附注&#xff1a;DQL执行顺序 1.编写顺序 2.执行顺序 ​​​…

oracle数据库修改已使用过的序列当前值

--查询当前值 select seq_test.nextval from dual; ----修改序列为增加的步长为50 alter sequence seq_test increment by 50 nocache; ---获取调整后的下一个值 select seq_test.nextval from dual; ----修改序列为原来的规则 alter sequence seq_test increment b…

VLAN的基础知识

VLAN配置 - NetEngine 8000 M14K, M14, M8K, M8, M4, 8000E M14, M8 V800R022C10SPC500 配置指南 - 华为 VLAN介绍 定义 VLAN&#xff08;Virtual Local Area Network&#xff09;即虚拟局域网&#xff0c;是将一个物理的LAN在逻辑上划分成多个广播域&#xff08;多个VLAN&a…

安装阿里云CLI之配置阿里云凭证信息

有时候需要再主机上通过 OpenAPI 的调用访问阿里云&#xff0c;并完成控制&#xff0c;此时就需要在服务器上安装阿里云CLI&#xff0c;并完成账号的设置。 1. 登录阿里云创建账号 1.1 点击阿里云头像 ——》 控制访问 ——》创建一个拥有DNS权限的用户 这个用户不用太多权限…

如何在Rust中解析复杂的嵌套JSON结构?

在Rust中解析复杂的嵌套JSON结构可以使用serde_json库。通过serde_json::Value类型的递归遍历&#xff0c;可以轻松地解析和访问嵌套的JSON数据。以下是一个示例&#xff1a; use serde_json::{Value};fn parse_json(json: &Value) {match json {Value::Object(obj) > …

小程序购物商城搭建开发分析

小程序商城作为现代商业模式的重要组成部分&#xff0c;具有巨大的发展潜力和商业价值。通过搭建一个功能完善、用户友好的小程序商城&#xff0c;您将能够提供便捷的购物体验&#xff0c;吸引更多的用户并实现商业增长。在进行小程序商城开发搭建之前&#xff0c;我们需要对项…

抽象工厂模式(Abstract Factory)

文章目录 定义与类型适用场景优点缺点产品等级结构与产品族抽象工厂代码示例 定义与类型 定义&#xff1a;抽象工厂模式提供一个创建一系列相关或相互依赖对象的接口&#xff0c;无须指定它们具体的类。 类型&#xff1a;创建型。 适用场景 客户端&#xff08;应用层&#…

cocos creator人开发小游戏免费素材资源

1、首先熟悉官方的手册和api文档&#xff0c;文档还是比较详细&#xff0c;游戏的方方面面都涉及到了 官方手册&#xff1a; http://docs.cocos.com/creator/manual/zh/官方api文档&#xff1a; http://docs.cocos.com/creator/api/zh/官方论坛&#xff1a; https://forum.coco…

AI提示工程指南

简述: 当今互联网行业对于AI提示工程的需求日益增长,而《AI提示工程指南》是一本旨在满足这种需求的宝贵指南。本指南由一位对AI提示工程充满热情并自学而来的互联网从业者撰写,旨在为行业人员提供一个全面、易懂的参考手册。 这本指南将引领您踏上AI提示工程的旅程,深入探…

Python数据处理 ——展现Pandas 的强大

一、简介 Pandas是一个基于NumPy的分析结构化数据的工具集&#xff0c;NumPy为其提供了高性能的数据处理能力。Pandas被普遍用于数据挖掘和数据分析&#xff0c;同时也提供数据清洗、数据I/O、数据可视化等辅助功能。Pandas不仅简洁&#xff0c;还拥有出众的数据处理能力和完备…

DevOps(3)

目录 11.描述root账户&#xff1f; 12.如何在发出命令时打开命令提示符&#xff1f; 14.Linux系统下交换分区的典型大小是多少&#xff1f; 15.什么是符号链接&#xff1f; 11.描述root账户&#xff1f; root账户就像一个系统管理员账户&#xff0c;允许你完全控制系统。 …

经常戴耳机有什么危害呢?一文读懂长时间使用耳机都有哪些危害

经常佩戴耳机可能会出现滋生细菌、引起炎症反应、损伤听力等危害。 1、滋生细菌&#xff1a;长时间戴耳机&#xff0c;会导致耳道堵塞&#xff0c;从而导致耳内潮湿&#xff0c;容易滋生细菌。 2、引起炎症反应&#xff1a;长时间戴耳机&#xff0c;会对耳道口造成机械性的压…

多线程和JVM

一&#xff0c;多线程实现的四种方式 1. 实现Runnable接口 普通实现&#xff1a; public class MyRunnable implements Runnable {Overridepublic void run() {System.out.println("线程执行中...");} }public class Main {public static void main(String[] arg…

采用intellij idea作为IDE的java项目由于*.iml文件导致无法编译问题

将项目中所有的iml文件删除&#xff0c;然后idea重新打开项目、编译&#xff0c;问题解决。 从git上将spring boot项目下载&#xff0c;用intellij idea打开&#xff0c;结果无法编译&#xff0c;提示“程序包com.fasterxml.jackson.core不存在”。编译来编译去&#xff0c;又…

口语化描述Maven的依赖范围(scope),简略不详细

文章目录 一、compile&#xff08;默认范围&#xff09;二、test&#xff08;用于测试&#xff09;三、provide四、import&#xff08;用来管理依赖版本&#xff09;五、system六、runtime版本仲裁 一、compile&#xff08;默认范围&#xff09; 范围最大哪里都能用 二、test…

vmware workstation的三种网络模式通俗理解

一、前言 workstations想必很多童鞋都在用&#xff0c;经常会用来在本机创建不同的虚拟机来做各种测试&#xff0c;那么对于它支持的网络模式&#xff0c;在不同的测试场景下应该用哪种网络模式&#xff0c;你需要做下了解&#xff0c;以便可以愉快的继续测&#xff08;搬&…

全年重磅!《2023年度TikTok电商行业趋势白皮书》发布!

2023年&#xff0c;似乎所有的东西都往相反的方向发展。疫情消退后经济没有明朗&#xff0c;局部冲突愈演愈烈没有消停&#xff0c;打工人辛苦工作工资没有涨&#xff0c;疯狂买买买的双十一也开始变得冷清... 似乎是不友好的一年&#xff0c;那你有听到“增长的声音”吗&…