(批量更新)對多個符合條件的id做更新操作


需求描述:把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。還是敲得代碼少,老大這個是真的厲害!!!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM