我们在上一篇整合SpringBoot的基础之上,再进行批量的实验。
首先,DruidDBConfig配置文件中,添加配置
//批量更新时,需要此配置
List<Filter> filterList=new ArrayList<Filter>();
filterList.add(wallFilter());
datasource.setProxyFilters(filterList);
application.properties配置文件的spring.datasource.url后面添加
allowMultiQueries=true
配置文件配置好后,我们可以开始准备代码了
UserMapper.xml文件
<insert id="batchInsert" parameterType="java.util.List"
useGeneratedKeys="true" keyProperty="id">
insert into user (name, age)
values
<foreach collection="list" item="user" index="index" separator=",">
(#{user.name},#{user.age})
</foreach>
</insert>
<update id="batchUpdate" parameterType="list">
<foreach collection="list" item="user" separator=";">
update user
set name = #{user.name}, age = #{user.age} where id = #{user.id}
</foreach>
</update>
<delete id="batchDelete" parameterType="java.util.List">
delete from user where id in
<foreach collection="list" index="index" item="id" open="(" close=")" separator=",">
#{id}
</foreach>
</delete>
UserMapper
int batchInsert(List<User> userList);
int batchUpdate(List<User> userList);
int batchDelete(List<Integer> idList);
UserService
public int batchInsert(List<User> userList) {
return userMapper.batchInsert(userList);
}
public int batchDelete(List<Integer> idList) {
return userMapper.batchDelete(idList);
}
public int batchUpdate(List<User> userList) {
return userMapper.batchUpdate(userList);
}
单元测试
@Test
public void batchInsert() {
List<User> list =new ArrayList<User>();
for(int i=1;i<=3;i++){
User user=new User();
user.setAge(i);
user.setName("insert"+i);
list.add(user);
}
int result = userService.batchInsert(list);
log.info("result:" + result);
}
@Test
public void batchUpdate() {
List<User> list =new ArrayList<User>();
for(int i=1;i<=3;i++){
User user=new User();
user.setId(i);
user.setAge(i);
user.setName("update"+i);
list.add(user);
}
int result = userService.batchUpdate(list);
log.info("result:" + result);
}
@Test
public void batchDelete() {
List<Integer> list =new ArrayList<Integer>();
for(int i=1;i<=3;i++){
list.add(i);
}
int result = userService.batchDelete(list);
log.info("result:" + result);
}