Mybatis中的foreach語句簡介

2021-09-26 02:59:09 字數 1672 閱讀 8592

mybatis中的foreach語句適用於多種業務場景,主要起的作用是迭代集合。在實際應用場景中,使用乙個正確的foreach能夠提高執行效率,所以通過記錄最近一次使用foreach的具體場景來了解foreach的具體實現。

通過業務層傳入乙個list集合,其中存放了一批id號,list list 隨後我要對此集合中的id取出依次遍歷,即寫法如下

select

*from

user

where1=

1<

if test=

"id != null"

>

and id in

"item"

index

="index" collection=

"list"

open

="(" separator=

","close

=")"

>

'$'<

/foreach>

>

等同於以下的mysql寫法:

select

*from

user

where id in(1

,2,3

,4,5

)

其中需要注意的是collection引數後面的值要與變數名保持一致,我這裡為list則需要保持一致,關於這幾個引數的詳解在文末會有介紹。

假如我傳過來的是乙個以,為分隔符的連貫字串,例如某個物件中有乙個屬性string extinfo = 「1,2,3,4,5」,依然跟上述的業務場景一致,那我們就需要先將該字串做處理之後再進行foreach迭代

select

*from

user

where1=

1<

if test=

"extinfo != null"

>

and id in

"item"

index

="index" collection=

"extinfo.split(',')"

open

="(" separator=

","close

=")"

>

'$'<

/foreach>

>

還有一種業務場景是針對map的迭代,例如有乙個key-value對應的是ids-list,我們也能通過foreach迭代該map下的ids鍵來實現

select

*from

user

where1=

1<

if test=

"extinfo != null"

>

and id in

"item"

index

="index" collection=

"ids"

open

="(" separator=

","close

=")"

>

'$'<

/foreach>

>

上述的foreach應用場景主要解決了使用in語句迭代批量查詢,迭代刪除以及迭代編輯等批量操作,那其中的引數具體是什麼意思呢。

mybatis sql語句中的foreach標籤

mybaits sql中不能直接用in只能用foreach替代 網上有很多關於foreach的例子,就像這樣 不知道是我用的不對還是怎麼著,這樣是就是報錯,原因也很簡單只要將 改成 就可以使用了。還有人說用這個 可以直接使用in,不懂也沒弄出來。collection listtag 要迴圈的集合 i...

mybatis中的說明

1.prefix 在trim標籤內sql語句加上字首。suffix 在trim標籤內sql語句加上字尾。suffixoverrides 指定去除多餘的字尾內容,如 suffixoverrides 去除trim標籤內sql語句多餘的字尾 prefixoverrides 指定去除多餘的字首內容 inse...

MyBatis中的快取

mybatis作為持久化框架,提供了非常強大的快取特性。一般在提到mybatis快取的時候,指的都是二級快取。一級快取,即本地快取,缺省會啟用並且不能控制,可能會導致一些難以發現的錯誤。一 一級快取 public void testl1cache finally system.out.println...