MyBatis以前不支持批量插入获取自增id,于是有些需求就难以实现,插入一批数据但是都需要知道id的场景(比如需要将id记录到日志表)就只能换成一个个插入,一定程度上降低了效率。
之前有大神分析过MyBatis源代码,并且给出了一种解决方案(稍微有点麻烦),详见:
https://my.oschina.net/zudajun/blog/674946
MyBatis在3.3.x修复了这个问题,详见:
https://github.com/mybatis/mybatis-3/pull/547
使用方式如下:
<insert id="batchInsert" useGeneratedKeys="true" keyProperty="id" parameterType="java.util.List">
insert into xxxx values
<foreach collection="list" item="item" index="index" separator=",">
xxx
</foreach>