在springboot + mybatis的專案裡實現批次刪除操作。
程式碼
xxxMapper.xml
:
...
<!-- 批次刪除使用者 -->
<delete id="deleteUsersByIds">
DELETE FROM users WHERE id IN
<foreach collection="list" item="id" open="(" separator="," close=")">
#{id}
</foreach>
</delete>
...
解釋:
<foreach collection="list" item="id" open="(" separator="," close=")">
:
- 使用
<foreach>
標籤來遍歷傳入的 id 列表。 collection="list"
表示傳入的引數是一個列表(可以是 List、Set 或陣列)。item="id"
表示遍歷時的每個元素將被稱為 id。open="("
表示在迴圈開始時輸出一個左括號。separator=","
表示每個元素之間用逗號分隔。close=")"
表示在迴圈結束時輸出一個右括號。
假設我們傳入的 list 是 [1, 2, 3, 4, 5],那麼
<foreach collection="list" item="id" open="(" separator="," close=")">
#{id}
</foreach>
這行程式碼生成的SQL片段為:
(1, 2, 3, 4, 5)
生成的完整的SQL語句為:
DELETE FROM users
WHERE id IN (1, 2, 3, 4, 5);