[关闭]
@hengbao 2018-06-04T03:27:59.000000Z 字数 757 阅读 1194

Mybatis批量插入

Mybatis


foreach方式插入

  1. @Test
  2. public void testInsertBatch() throws Exception {
  3. long start = System.currentTimeMillis();
  4. List<User> list = new ArrayList<>();
  5. User user;
  6. for (int i = 0; i < 10000; i++) {
  7. user = new User();
  8. user.setId("test" + i);
  9. user.setName("name" + i);
  10. user.setDelFlag("0");
  11. list.add(user);
  12. }
  13. userService.insertBatch(list);
  14. long end = System.currentTimeMillis();
  15. System.out.println("---------------" + (start - end) + "---------------");
  16. }
  1. <insert id="insertBatch">
  2. INSERT INTO t_user
  3. (id, name, del_flag)
  4. VALUES
  5. <foreach collection ="list" item="user" separator =",">
  6. (#{user.id}, #{user.name}, #{user.delFlag})
  7. </foreach >
  8. </insert>

特别注意:mysql默认接受sql的大小是1048576(1M),若数据量超过1M会报异常:(可通过调整MySQL安装目录下的my.ini文件中[mysqld]段的"max_allowed_packet = 1M")

这里需要注意的是,collection 属性必须指明,对应List、Array、Map都有具体规则,可以参考官方文档

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注