1:xml的配置

  <insert id="insertUserBatch">
insert into user(username, birthday, sex, address)
VALUES
<foreach collection="list" item="User" index="index" separator=",">
(
#{User.username},
#{User.birthday},
#{User.sex},
#{User.address}
)
</foreach>
</insert>

2:测试

@Test
public void insertUserBatch() {
List<User> users = new ArrayList<User>(); User user1 = new User();
user1.setUsername("云澈");
user1.setSex("男"); User user2 = new User();
user2.setUsername("张小凡");
user2.setSex("男"); User user3 = new User();
user3.setUsername("火灵儿");
user3.setSex("女"); users.add(user1);
users.add(user2);
users.add(user3); userMapper.insertUserBatch(users);
sqlSession.commit();
}

对于foreach标签的解释参考了网上的资料,具体如下:

foreach的主要用在构建in条件中,它可以在SQL语句中进行迭代一个集合。

foreach元素的属性主要有 item,index,collection,open,separator,close。

item表示集合中每一个元素进行迭代时的别名,index指定一个名字,用于表示在迭代过程中,每次迭代到的位置,open表示该语句以什么开始,separator表示在每次进行迭代之间以什么符号作为分隔 符,close表示以什么结束,在使用foreach的时候最关键的也是最容易出错的就是collection属性,该属性是必须指定的,但是在不同情况 下,该属性的值是不一样的,主要有一下3种情况:

1.如果传入的是单参数且参数类型是一个List的时候,collection属性值为list

2.如果传入的是单参数且参数类型是一个array数组的时候,collection的属性值为array

3.如果传入的参数是多个的时候,我们就需要把它们封装成一个Map了,当然单参数也可以封装成map

mybatis数据的批量插入的更多相关文章

  1. MyBatis 使用 foreach 批量插入

    MyBatis 使用 foreach 批量插入 参考博文 老司机学习MyBatis之动态SQL使用foreach在MySQL中批量插入 使用MyBatis一次性插入多条数据时候可以使用 <for ...

  2. MSSQL数据的批量插入

    一.概述: 对于数据的批量插入操作似乎成了某些大数据量操作的必用手段,MSSQL也提供了一些数据批量插入的操作方法,先将这些方法汇总,以便于下次用到使用.面对数据的批量插入操作,我们也应该考虑一个问题 ...

  3. postgresql优化数据的批量插入

    原文:http://www.cnblogs.com/mchina/archive/2012/08/11/2537393.html 有以下几种方法用于优化数据的批量插入. 1. 关闭自动提交:      ...

  4. C#使用SqlDataAdapter 实现数据的批量插入和更新

    近日由于项目要求在需要实现中型数据的批量插入和更新,晚上无聊,在网上看到看到这样的一个实现方法,特摘抄过来,以便以后可能用到参考. 一.数据的插入 DateTime begin = DateTime. ...

  5. MySQL 避免重复数据的批量插入与批量更新

    [转发] 导读 我们在向数据库里批量插入数据的时候,会遇到要将原有主键或者unique索引所在记录更新的情况,而如果没有主键或者unique索引冲突的时候,直接执行插入操作. 这种情况下,有三种方式执 ...

  6. mybatis oracle mysql 批量插入时的坑爹问题--需谨记

    mybatis oracle mysql 批量插入一.oracle的批量插入方式insert into db(id, zgbh, shbzh) select '1', '2', '3' from du ...

  7. mybatis使用序列批量插入数据

    mybatis只提供了单条数据的插入,要批量插入数据我们可以使用循环一条条的插入,但是这样做的效率太低下,每插入一条数据就需要提交一次,如果数据量几百上千甚至更多,插入性能往往不是我们能接受的,如下例 ...

  8. Mybatis与JDBC批量插入MySQL数据库性能测试及解决方案

    转自http://www.cnblogs.com/fnz0/p/5713102.html 不知道自己什么时候才有这种钻研精神- -. 1      背景 系统中需要批量生成单据数据到数据库表,所以采用 ...

  9. MyBatis操作Oracle批量插入 ORA-00933: SQL 命令未正确结束

    最近在使用MyBatis操作Oracle数据库的时候,进行批量插入数据,思路是封装一个List集合通过Myabtis 的foreach标签进行循环插入,可是搬照Mysql的批量插入会产生 异常 ### ...

  10. SQL Server中中数据行批量插入脚本的存储实现

        看到博友SQL Server MVP桦仔的一篇博文“将表里的数据批量生成INSERT语句的存储过程的实现”.我仔细看来博文中的两个存储代码,自我感觉两个都不太满意,都是生成的单行模式的插入,数 ...

随机推荐

  1. streamlit使用技巧

    实现上传PDF并显示 ## 上传并预览(1M以内才可预览) def upload_Pre(): file = st.file_uploader("选择待上传的PDF文件", typ ...

  2. JVM:java虚拟机栈

  3. 一个9年archlinux重度使用者自述

    系统没有高低贵贱,主要还是使用的人,哪个跟你更契合.对我而言, archlinux就是最契合的那个.本文主要是对archlinux使用做一个粗浅的介绍,如果能勾起你一丝兴趣,那就更好了. 第一部分:初 ...

  4. 深入解析 Spring AI 系列:解析请求参数处理

    大家在使用Spring AI项目开发Agent时,可能会发现,尽管外层的接口设计和调用逻辑比较统一,但实际上每个第三方接口在实现时都会有一些微妙的差异.这些差异可能体现在请求参数的构造.数据格式的处理 ...

  5. el-table合计行

    用到属性 showSummary 是否显示合计,方法 summaryMethod 计算合计的自定义方法. <el-table ref="elTable" :data=&quo ...

  6. Fluttter基础组件Image的使用

    1.图片 Image 图片组件( Image)是显示图像的组件, Image 组件有多种构造函数 : new Image:从 ImageProvider 获取图像 . new Image.asset: ...

  7. Leetcode 765 情侣牵手 / Hetao-013 翅膀打结 题解 [ 黄 ] [ 并查集 ] [ BFS ] [ 贪心 ]

    经典的连通块题,幸好我之前在 leetcode 看过原. 转化 首先观察到一对cp无论是男在前,还是女在前,都视为配对成功,对答案无影响. 因此,我们可以把一对情侣赋同一个编号,直接加一除以二即可. ...

  8. 我的世界服务端插件安装 Vault经济前置插件安装(商店,圈地等需要该前置插件)

    Minecraft服务端插件安装-Vault用户登录插件安装 需要准备Vault插件 Vault.jar经济前置插件 Minecraft Vault插件是一款用于Minecraft服务器的多功能经济. ...

  9. 2024电子取证“獬豸杯”WP

    简介: 竞赛为个人赛,工具自备,只发证书(还没用,公告这么写的哈)竞赛选手们将对模拟的案件进行电子数据调查取证,全面检验参赛选手电子数据取证的综合素质和能力. 检材链接: https://pan.ba ...

  10. Android开发之定时任务(AlarmManager、WorkManager)

    Android 程序的定时任务主要有AlarmManager.WorkManager两种. 一.AlarmManager AlarmManager,又称闹钟,可以设置一次性任务,周期重复任务,定时重复 ...