MyBatis傳入參數為集合、數組SQL寫法
阿新 • • 發佈:2018-05-11
and pos collect pro 集合 IT tail -a not
參考:http://blog.csdn.net/small____fish/article/details/8029030
foreach的主要用在構建in條件中,它可以在SQL語句中進行叠代一個集合。foreach標簽的屬性主要有item,index,collection,open,separator,close。
- item 表示集合中每一個元素進行叠代時的別名,隨便起的變量名;
- index 指定一個名字,用於表示在叠代過程中,每次叠代到的位置,不常用;
- open 表示該語句以什麽開始,常用“(”;
- separator表示在每次進行叠代之間以什麽符號作為分隔符,常用“,”;
- close 表示以什麽結束,常用“)”。
在使用foreach的時候最關鍵的也是最容易出錯的就是collection屬性,該屬性是必須指定的,但是在不同情況下,該屬性的值是不一樣的,主要有一下3種情況:
- 如果傳入的是單參數且參數類型是一個List的時候,collection屬性值為list .
- 如果傳入的是單參數且參數類型是一個array數組的時候,collection的屬性值為array .
- 如果傳入的參數是多個的時候,我們就需要把它們封裝成一個Map了,當然單參數也可以封裝成map,實際上如果你在傳入參數的時候,在MyBatis裏面也是會把它封裝成一個Map的,
map的key就是參數名,所以這個時候collection屬性值就是傳入的List或array對象在自己封裝的map裏面的key
另常用判斷:
判斷集合不為空
ibatis | MyBatis |
<isNotEmpty property="key" prepend="AND"> <!-- your SQL --> </isNotEmpty> | <if test="key != null and key.size() > 0"> <!-- your SQL --> </if> |
判斷數組不為空
ibatis | MyBatis |
<isNotEmpty property="key" prepend="AND"> <!-- your SQL --> </isNotEmpty> | <if test="key != null and key.length > 0"> <!-- your SQL --> </if>
|
註意:ibatis的AND在標簽裏面設置,MyBatis只能寫在sql裏面。
MyBatis傳入參數為集合、數組SQL寫法