Mybatis學習第11節 -- 動態sql foreach 批量刪除


需求

假設我們現在想要將用戶勾選中的商鋪批量刪除或者進行批量其他操作
接口
int deleteShopInList(List<Integer> ids);
映射
在這里注意foreach的collection屬性只有list和array兩個值可用
<delete id="deleteShopInList">
DELETE
FROM
tb_shop
WHERE `shop_id` IN
<foreach collection="list" index="index" item="item" open="(" close=")" separator=",">
#{item}
</foreach>
</delete>
測試
@Test
public void testDeleteShopInList() {
String template = "批量刪除結果: %s\n";
SqlSession session = MyBatisUtil.getSqlSession();
ShopMapper mapper = session.getMapper(ShopMapper.class);

List<Integer> ids = Arrays.asList(40, 41);

System.out.printf(template, mapper.deleteShopInList(ids));
session.commit();
session.close();
}
結果
Setting autocommit to false on JDBC Connection [com.mysql.cj.jdbc.ConnectionImpl@46c670a6]
==> Preparing: DELETE FROM tb_shop WHERE `shop_id` IN ( ? , ? ) 
==> Parameters: 40(Integer), 41(Integer)
<== Updates: 2
批量刪除結果: 2
 

總結

一定要細心檢查sql語句是不是沒有問題, 如果在上述案例中的tb_shop后面多一個反引號`就會報參數設置錯誤, 還是不容易發現真正錯誤在哪里的


免責聲明!

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



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