日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mybatis做批量删除时写SQL语句时遇到的问题

發布時間:2025/3/19 数据库 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mybatis做批量删除时写SQL语句时遇到的问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我一開始想法很簡單就是用where id in (這里用foreach遍歷出來) 語句來完成。

這個想法是正確的,但是我踩了不知道多少個坑才寫出來。

一、mapper層

/** 根據新聞id刪除評論* @Param* @return**/ int deleteCommentByNewsId(ArrayList<Integer> newsIds);

二、mybatis寫的sql語句

<delete id="deleteCommentByNewsId">delete from comment where news_idin<foreach collection="list" item="id" index="index" open="(" close=")" separator=",">#{newsId}</foreach></delete>

collection 這里一開始寫的 list 然后遍歷的里面寫的 #{newsId}。

然后果不其然就報錯一堆。 給我來了一個這樣的錯誤…

然后我還不知道悔改,粗略看了網上講的 collection 里面填什么。(細心很重要,找bug要有耐心)

因為我的是 ArrayList ,就填了一個 list 進去 錯了之后我還試過網上講的array 都錯了 就不貼出來啦。

<delete id="deleteCommentByNewsId">delete from comment where news_idin<foreach collection="list" item="id" index="index" open="(" close=")" separator=",">#{newsId}</foreach></delete>

盡量保持平靜中(實則心中各種草泥馬在奔跑)

然后繼續找大佬博客。最后的最后 我終于學會啦。

collection 里面填的是 參數名。 心里苦啊。

最后的語句是這樣的

<delete id="deleteCommentByNewsId">delete from comment where news_idin<foreach collection="newsIds" item="id" index="index" open="(" close=")" separator=",">#{id}</foreach></delete>

三、詳解 foreach 標簽及其屬性

最后來總結一下這個 foreach。

foreach的主要用在構建in條件中,它可以在SQL語句中進行迭代一個集合。

foreach元素的屬性主要有 item,index,collection,open,separator,close。

item表示集合中每一個元素進行迭代時的別名, index指 定一個名字,用于表示在迭代過程中,每次迭代到的位置, open表示該語句以什么開始, separator表示在每次進行迭代之間以什么符號作為分隔 符, close表示以什么結束。

這就是我所知道的一點點東西。希望能夠對大家有幫助。

四、自言自語

許多知識學的不踏實,并且不去用,又不去復習,我想它是真的會慢慢就離開我們的。

學以致用。

溫故而知新。

總結

以上是生活随笔為你收集整理的mybatis做批量删除时写SQL语句时遇到的问题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。