ibatis實現Iterate的使用
<iterate
property="" /*可選, 從傳入的參數集合中使用屬性名去獲取值, 這個必須是一個List類型, 否則會出現OutofRangeException, 通常是參數使用java.util.Map時才使用, 如果傳入的參數本身是一個java.util.List, 不能只用這個屬性. /
conjunction="" /*可選, iterate可以看作是一個循環, 這個屬性指定每一次循環結束後添加的符號, 比如使每次循環是OR的, 則設置這個屬性為OR*/
open="" /*可選, 循環的開始符號*/
close="" /*可選, 循環的結束符號*/
prepend="" /*可選, 加在open指定的符號之前的符號*/
>
1.查詢
<!-- Iterate的使用,根據多個匹配條件查詢,類似in(a,b,c)-->
<select id="selectByIterate" parameterClass="java.util.List" resultClass="user">
SELECT * FROM USERS WHERE USER_ID IN
<iterate conjunction="," open="(" close=")">
#ids[]#
</iterate>
</select>
註意:不要property屬性,否則報錯。String index out of range: -1
2. 但是,若參數有多個傳入的一個是List,另一個不是, parameterClass為map時,需要property屬性區分要遍歷的 集合。
2.刪除
<!-- 批量刪除對象的時候,iterate不要property屬性 -->
<delete id="delStudybook" parameterClass="java.util.List">
delete FROM STUDYBOOK WHERE ID IN
<iterate conjunction="," open="(" close=")">
#bookList[]#
</iterate>
</delete>
http://hongzhguan.iteye.com/blog/1222353
ibatis實現Iterate的使用