MyBatis之批量操作

我们在上一篇整合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);
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

猎户星座。

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值