Mybatis批量插入更新xml方式和注解方式的方法实例
作者:马佩 发布时间:2022-06-17 18:09:09
标签:mybatis,xml,批量
前言
最近工作上遇到很多批量插入的场景,但是百度很难得到我想要的结果,而且查出来的效果不是很好~
所以就自己来写一份给大家参考,希望对大家有用
Mybatis 批量插入注解形式
@Insert("<script> INSERT INTO t_device_policy "
+ "(id,device_id,type,policy,create_time,update_time) "
+ "VALUES "
+ "<foreach collection = 'list' item='list' separator=',' > "
+ " (#{list.id},#{list.deviceId},#{list.policyType},#{list.policy},#{list.createTime},#{list.updateTime}) "
+ "</foreach>"
+ "</script>")
int insert(@Param(value = "list")List<DevicePolicy> list);
Mybatis 批量插入主键存在更新注解形式
@Insert("<script> INSERT INTO t_device_policy "
+ "(id,device_id,type,policy "
+ "VALUES "
+ "<foreach collection = 'list' item='list' separator=',' > "
+ " (#{list.id},#{list.deviceId},#{list.policyType},#{list.policy}) "
+ "</foreach>"
+ "ON DUPLICATE KEY "
+ "UPDATE policy = VALUES(policy)"
+ "</script>")
int insert(@Param(value = "list")List<DevicePolicy> list);
ON DUPLICATE KEY的使用场景大家知道吗?
当你设计的数据库表中的主键存在时更新对应的字段,不存在则插入。
还有一种情况就是你设计的唯一主键存在时更新对应的字段,不存在则插入。
大家可以根据自己的场景看是否需要该字段~
Mybatis 批量更新注解形式
@Insert("<script> INSERT INTO t_device_policy "
+ "(id,device_id,type,policy "
+ "VALUES "
+ "<foreach collection = 'list' item='list' separator=',' > "
+ " (#{list.id},#{list.deviceId},#{list.policyType},#{list.policy}) "
+ "</foreach>"
+ "ON DUPLICATE KEY "
+ "UPDATE policy = VALUES(policy)"
+ "</script>")
int insert(@Param(value = "list")List<DevicePolicy> list);
Mybatis 批量插入xml形式
<insert id="batchAdd" parameterType="java.util.List">
INSERT INTO t_student(uid,student_id,study_days)
VALUES
<foreach collection="list" item="item" index="index" separator=",">
(#{item.uid},#{item.studentId},#{item.studyDays})
</foreach>
</insert>
Mapper中的方法为
void batch(List<StudentPo> po)
Mybatis 批量插入主键更新xml形式
<insert id="batchAdd" parameterType="java.util.List">
INSERT INTO t_student(uid,student_id,study_days)
VALUES
<foreach collection="list" item="item" index="index" separator=",">
(#{item.uid},#{item.studentId},#{item.studyDays})
</foreach>
ON DUPLICATE KEY UPDATE
update_time = now()
</insert>
Mapper中的方法为
void batch(List<StudentPo> po)
总结
以上为Mybatis批量操作经常使用的部分,大家可以根据需要自行提取,如果有什么问题可以留言哈~希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。
来源:https://juejin.im/post/5ddb49285188257353094a47


猜你喜欢
- 发展历史Gradle 的依赖管理是一个从开始接触 Android 开发就一直伴随着我们的问题(作者是Andro
- 本文实例讲述了C#将Json解析成DateTable的方法。分享给大家供大家参考。具体实现方法如下:#region 将 Json 解析成 D
- 1、什么是GOCW 为了解决在Csharp下编写OpenCV程序的问题,我做过比
- Maven是项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的项目管理工具软件。Maven是一个项目管理工具,它包
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN&
- 循环轮播的方法有两种,一种是使用定时器另外一种是使用手指拨动,相比较而言,定时器实现循环播放比较容易,只要在定时器的消息里加上简单几段代码即
- 本文实例讲述了Android使用SharedPreferences存储数据的实现方法。分享给大家供大家参考,具体如下:编辑短信的时候,突然接
- 属性属性是一种成员,它提供灵活的机制来读取、写入或计算私有字段的值。属性可用作公共数据成员,但它们实际上是称为“访问器”的特殊方法。这使得可
- 建造者模式针对的是复杂对象的构建,比如一个产品有多个部分构成,每个部分都可以单独进行生产,这时候就可以用建造者模式,由Builder构造产品
- 前言Email就是电子邮件,我们平常使用的QQ邮箱,网易邮箱,Foxmail都是用来收发邮件的,利用Java程序也可以完成收发电子邮件的功能
- Android PopWindow 设置背景亮度的实例设置背景 /** * 设置添加屏幕的背景透明度 * @param bgAl
- Maven依赖:<dependency><groupId>de.rototor.jeuclid</groupI
- 一, eclipse springboot打war包1. 配置pom.xml文件<packaging>war</packa
- springboot2.x暴露健康状况通过prometheus监控加入依赖 <!--prometheus监控 https://prom
- 格式化一个数值,比如123456789.123,希望显示成"$123,456,789.123".要完成需求,可以用jav
- 概述在Java环境下创建定时任务有多种方式:使用while循环配合 Thread.sleep(),虽然稍嫌粗陋但也勉强可用使用 Timer和
- 目录一、自定义认证逻辑二、自定义过滤器总结一、自定义认证逻辑生成验证码工具<dependency> &
- @RequestBody部分属性丢失问题描述JavaBean实现public class VerifyNewFriendApplyReq i
- 1.运行程序时, AddOrEditBook1.BooksType = GetTypeName(model.BookType_ID); 出现
- 1、抽象类 vs 接口 方法类型: 接口只能有抽象方法。抽象类可以有抽象和非抽象方法。从 Java 8 开始,它也可以有默认和静态