(批量更新)对多个符合条件的id做更新操作

本文介绍了一种通过使用灵活的SQL语句实现批量更新数据库记录的方法。这种方法只需一次数据库访问即可完成多个记录的状态更新,大大提高了效率。具体实现是通过将需要更新的ID列表传递给SQL语句,并使用foreach循环来匹配这些ID。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

需求描述:把checkbox勾选的对应id的记录的标志位置1或0,这个其实不难的,不过我自己做的话,肯定是多次访问数据库做更新,看了老大的代码,发现差距不是一般的大,老大把sql灵活运用,结果一次访问数据库,就做完更新了,真的是get到了。不多说,贴代码。

代码:

public void changeHide(String resIds, String type) throws Exception {//service层  type就是一个值 0 或 1
if(Tools.notEmpty(resIds)){
List<String> list = new ArrayList<>();
String[] resIdArr = resIds.split(",");
for (String resId :resIdArr) {
list.add(resId);
}
Map<String, Object> paramMap = new HashMap<>();
paramMap.put("resIds",list);
paramMap.put("type",type);
dao.update("XXXXXResourcesMapper.changeHide",paramMap);
}
}
mapper里的sql:
<update id="changeHide" parameterType="java.util.Map">
update
<include refid="tableName"></include>
set r.hide = #{type}
where r.res_id in
<foreach item="item" index="index" collection="resIds" open="(" separator="," close=")">//这里要说明一下,collection参数一定要填写对应好,因为前边方法传的是resIds,所以这里也是,item表示list里的元素的别名 index表示索引,当指针来理解
#{item}
</foreach>
</update>

 

总结:这个批量更新的精华就在于,只要数据库中的id在这个list(也就是resIds)中存在,就对其进行更新操作。  让我拿来做,我可能会对resIds做个增强for循环,然后再循环里边调用update方法,参数就是每一个resId。还是敲得代码少,老大这个是真的厉害!!!

 

转载于:https://www.cnblogs.com/xuchao0506/p/9578030.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值