最近遇到一个需求,就是保存数据,一次性保存很多,之前我都是一条一条的insert,那样一来其实浪费了很多io,效率不高,因因此,批量插入,安排起来!!
mapper的方法是这样写的。
int insertBatch(List<对象> record);
我这里直接用“对象”表示,实际按照自己具体的对象名来即可。
然后xml的写法如下,我的主键id 是自增长(推荐自增长,这样不会因为同时插入发生死锁情况)
<!-- 批量插入内容 -->
<insert id="insertBatch" parameterType="java.util.List">
<selectKey resultType="java.lang.Integer" keyProperty="id"
order="AFTER">
SELECT LAST_INSERT_ID()
</selectKey>
insert into 表名
(id, xx,xx1,xx2)
values
<foreach collection="list" item="item" index="index" separator=",">
(
#{item.id,jdbcType=INTEGER}, #{item.xx,jdbcType=INTEGER}, #{item.xx1,jdbcType=INTEGER},
#{item.xx2,jdbcType=INTEGER}
)
</foreach>
</insert>
大功告成!!!