在ibatis中經(jīng)常會遇到各種標(biāo)簽,其中有一個<iterate>標(biāo)簽是我們經(jīng)常遇到的。對于<iterate>標(biāo)簽,可能還有很多朋友不夠熟悉,本文就來詳細(xì)介紹<iterate>標(biāo)簽。
在看ibatis文檔時,就看見過這個標(biāo)簽,并且還對其不是很了解,一直沒有到現(xiàn)在,在工作中用到了標(biāo)簽時,才去了解了一下這個標(biāo)簽的具體含義。先把文檔中對標(biāo)簽的介紹貼出來一起分享。
標(biāo)簽:這屬性遍歷整個集合,并為List集合中的元素重復(fù)元素體的內(nèi)容。
標(biāo)簽的屬性:
prepend-可被覆蓋的SQL語句組成部分,添加在語句的前面(可選)
property-類型為java.util.List的用于遍歷的元素(必選)
open-整個遍歷內(nèi)容體開始的字符串,用于定義括號(可選)
close-整個遍歷內(nèi)容體結(jié)束的字符串,用于定義括號(可選)
conjunction-每次遍歷內(nèi)容之間的字符串,用于定義AND或OR(可選)
iterate-遍歷類型為java.util.List(或數(shù)組)的元素。
例子:
<iterate prepend=”AND” property=”userNameList”
open=”(” close=”)” conjunction=”O(jiān)R”>
username=#userNameList[]#
</iterate>
注意:使用標(biāo)簽時,在List元素名后面包括方括號[]非常重要,方括號[]將對象標(biāo)記為List,以防解析器簡單地將List輸出成String。
我本人對上面標(biāo)簽中內(nèi)容的理解如下:
在生成該條sql語句時,標(biāo)簽中的內(nèi)容是循環(huán)生成的,就拿上面的例子來說,生成的sql是(username=xxx1 or username=xxx2 or username=xxx 3)而不是(username=xxx1 or xxx2 or xxx3) 再舉個例子,如下:
id in
<iterate prepend="" property="ids" open="(" close=")" conjunction="," >
#ids[]#
</iterate> 。。。。。。。(1)
其生成的sql語句是:id in (xx1,xx2,xx3,.....),括號中的(包括括號)是標(biāo)簽生成的。
標(biāo)簽雖然是遍歷整個集合的,但標(biāo)簽不象我們在java中用到的for一樣,一次一次的循環(huán)生成標(biāo)簽中的內(nèi)容,而是一次性利用list或數(shù)組生成整個可運(yùn)行的sql語句。就好比(1)它生成的sql不可能象這樣:id in (xx1)
id in (xx2) ,id in (xx3),.....
【編輯推薦】
- ibatis插件的安裝方式
- ibatis級聯(lián)解決登錄系統(tǒng)問題
- 實(shí)例說明ibatis動態(tài)查詢
- ibatis下加入c3p0連接池的方法
- ibatis也能用proxool連接池