日期:2014-05-16  浏览次数:20403 次

batis的iterate使用

Iterate:这属性遍历整个集合,并为 List 集合中的元素重复元素体的内容。 ?
Iterate 的属性:?
??????prepend? - 可被覆盖的 SQL 语句组成部分,添加在语句的前面(可选)?
??????property? - 类型为 java.util.List 的用于遍历的元素(必选)?
??????open? -? 整个遍历内容体开始的字符串,用于定义括号(可选)?
??????close? -整个遍历内容体结束的字符串,用于定义括号(可选)?
??????conjunction -? 每次遍历内容之间的字符串,用于定义 AND 或 OR(可选)?
??????遍历类型为 java.util.List的元素。?

例子:?
<iterate prepend=”AND” property=”userNameList”?
open=”(” close=”)” conjunction=”OR”>?
username=#userNameList[]#?
</iterate>

ibatis中如何配置in语句,需要迭代,不能直接用string的写法
<select id="sql_test" parameterclass="myPramBean" resultclass="myResult">
select *from tablewhere name in?
<iterate property="ids" conjunction="," close=")" open="(" />?
#value[]#?
</iterate>
and code=#code#
</select>
myPramBean
{
private String code;
private List ids;
...
}?

eg:
<delete id="member.batchDelete" parameterClass="java.util.List">
? ?? ?DELETE FROM member where id IN
? ?? ?<iterate conjunction="," open="(" close=")" >
? ?? ??? ?#value[]#?
? ?? ?</iterate>
</delete>

注意: 使用<iterate>时,在List元素名后面包括方括号[]非常重要,方括号[]将
对象标记为List,以防解析器简单地将List输出成String。