假设有对数据表person进行批量插入,dao层的代码为
int addPersons(@Param("persons") List<Person> persons);
方法1 foreach标签:
<insert id="addPersons" >
insert into person(username,email,gender) values
<foreach collection="persons" item="person" separator=",">
(#{person.username},#{person.email},#{person.gender})
</foreach>
</insert>
方法2 allowMultiQueries=true
<insert id="addPersons">
<foreach collection="persons" item="person" separator=";">
insert into person(username,email,gender) values
(#{person.username},#{person.email},#{person.gender})
</foreach>
</insert>
该方法必须要在jdbc.url后面加上参数allowMultiQueries=true
方法3 是ExecutorType进行添加。
推荐最后一种方法,因为前两种方法在批量插入大量数据时,数据库需要解析大段语句,负担较重。