(批量更新)对多个符合条件的id做更新操作
需求描述:把checkbox勾选的对应id的记录的标志位置1或0,这个其实不难的,不过我⾃⼰做的话,肯定是多次访问数据库做更新,看了⽼⼤的代码,发现差距不是⼀般的⼤,
⽼⼤把sql灵活运⽤,结果⼀次访问数据库,就做完更新了,真的是get到了。不多说,贴代码。
代码:
public void changeHide(String resIds, String type) throws Exception {//service层  type就是⼀个值 0 或 1
Empty(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:
批量更新sql语句<update id="changeHide" parameterType="java.util.Map">
update
<include refid="tableName"></include>
set r.hide = #{type}
s_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。还是敲得代码少,⽼⼤这个是真的厉害

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。