Iterate:这属性遍历整个集合,并为 List 集合中的元素重复元素体的内容。
Iterate 的属性:
property - 类型为 java.util.List 的用于遍历的元素(必选)
prepend - 可被覆盖的 SQL 语句组成部分,添加在语句的前面(可选)
open - 整个遍历内容体开始的字符串,用于定义括号(可选)
close - 整个遍历内容体结束的字符串,用于定义括号(可选)
conjunction - 每次遍历内容之间的字符串,用于定义 AND 、 OR或其他(可选)
Iterate 的属性:
property - 类型为 java.util.List 的用于遍历的元素(必选)
prepend - 可被覆盖的 SQL 语句组成部分,添加在语句的前面(可选)
open - 整个遍历内容体开始的字符串,用于定义括号(可选)
close - 整个遍历内容体结束的字符串,用于定义括号(可选)
conjunction - 每次遍历内容之间的字符串,用于定义 AND 、 OR或其他(可选)
eg:
<delete id="user.deletes" parameterClass="java.util.List">
delete from user where id in
<iterate property="idlist" conjunction="," open="(" close=")" >
#value[]#
</iterate>
</delete>
注:
1.使用<iterate>时,在List元素名后面包括方括号[]很重要,方括号[]将对象标记为List,否则解析器会简单地将List输出成String。
2.在Ibatis在写sql语句的时候,常常在sql语句外加入"<![CDATA["和"]]>",但是在使用Iterate不能被包含其中。
原因是Ibatis是用标准的xml解析工具是解析来xml的,当遇到"<![CDATA["和"]]> "存在,就把其中的内容当做sql来处理,便不会处理iterate了。