mybatis做批量删除时写SQL语句时遇到的问题
生活随笔
收集整理的這篇文章主要介紹了
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语句时遇到的问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MySQL 数据类型讲解 和Java中所
- 下一篇: 使用Postman 传递arraylis