1.批量插入:
user.xml
<insert id="bacthinsert" useGeneratedKeys="true" parameterType="java.util.List">
insert into t_user(username,password,email,nickname,isactive)
value
<foreach collection="list" item="item" index="index"
separator=",">
(#{item.username},#{item.password},#{item.email},#{item.nickname},#{item.isactive})
</foreach>
</insert>
test:
@Test
public void testBatchInsert(){
User u1 = new User();
u1.setUsername("六六六");
User u2 = new User();
u2.setUsername("建军节");
List<User> users = new ArrayList<User>();
users.add(u1);
users.add(u2);
ud.bacthinsert(users);
}
2.批量删除:
<delete id="bacthdelete" parameterType="java.util.List">
delete from t_user where id in
<foreach collection="list" index="index" item="item" open="("
separator="," close=")">
(#{item})
</foreach>
</delete>
test:
@Test
public void testBatchDelete(){
int id1 = 60;
int id2 = 62;
int id3 = 63;
List<Integer> ids = new ArrayList<Integer>();
ids.add(id1);ids.add(id2);ids.add(id3);
ud.bacthdelete(ids);
}
3.批量更新:
前提在application.xml的数据源中添加:allowMultiQueries=true;
<property name="url">
<value>jdbc:mysql://localhost:3306/myproject?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true
</value>
/property>
<update id="batchupdate" parameterType="java.util.List">
<foreach collection="list" item="item" index="index" separator=";">
update t_user
<set >
<if test="item.username != null" >
username = #{item.username,jdbcType=VARCHAR},
</if>
</set>
where id = #{item.id,jdbcType=INTEGER}
</foreach>
</update>
test:
@Test
public void testBatchUpdates(){
List<User> users=new ArrayList<User>();
User u=new User();
u.setUsername("111");
u.setId(1);
User u2 = new User();
u2.setId(2);
u2.setUsername("222");
users.add(u);
ud.batchupdate(users);
}