mybatis 批量插入数据

mybatis常用批量插入数据方法

 

foreach标签

mybatis BATCH模式插入

 

1. 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

批量插入sql语句:

INSERT INTO table (field1,field2,field3) VALUES ('a',"b","c"), ('a',"b","c"),('a',"b","c")

mybatis通过foreach循环拼装了如上的sql语句。

mybatis 批量插入数据

 

2.mybatis BATCH模式插入

mybatis 批量插入数据

 

 

 

mybatis 批量插入数据

改良版, 加上foreach

mybatis 批量插入数据

 

 

 

3. 测试结果

方式

耗时

普通for循环10w

53181 ms

batch模式10w

20473 ms

batch模式+foreache 10w

8860 ms