ibatis实现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>






梅花香自古寒来