动态标签分类:1<dynamic>,2 二元标签,3 一元标签,4<iterate>
这四种标签以及他们的子标签具有共同的属性prepend,open,close
1 <dynamic>
Xml代码
<statement id="dynamicGetAccountList"resultMap="account-result">
<!--
removeFirstPrepend="true",所有一般都要写上perpend="and",需要的时候他会自动去掉-->
<!--
<statement id="dynamicGetAccountList"resultMap="account-result">
select * from ACCOUNT
<dynamic prepend="WHERE">
<isNotNull prepend="AND"property="firstName">
<!-- 生成的语句不会有多余and,因为dynamic有一个隐含的属性,
removeFirstPrepend="true",所有一般都要写上perpend="and",需要的时候他会自动去掉-->
(ACC_FIRST_NAME = #firstName#
<isNotNull prepend="OR"property="lastName">
ACC_LAST_NAME = #lastName#
</isNotNull>
)
</isNotNull>
<isNotNull prepend="AND"property="emailAddress">
ACC_EMAIL like #emailAddress#
</isNotNull>
<!-- <isNotEmpty property="firstName"prepend="and" open="(" close=")" >firstName=#firstName# </isNotEmpty>-->
<isGreaterThan prepend="AND" property="id"
compareValue="0">
<!-- //如果参数id的值大于给定的比较值(0),那么加上下面的语句(andacc_id=#id#) ACC_ID-->
= #id#
</isGreaterThan>
</dynamic>
order by ACC_LAST_NAME
</statement>
2、一元条件元素的属性:
prepend - 可被覆盖的SQL语句组成部分,添加在语句的前面(可选)
<isPropertyAvailable>
<isNotPropertyAvailable>
<isNull>
<isNotNull>
<isEmpty>
<isNotEmpty>
例子:
<isNotEmpty prepend=”AND” property=”firstName”>
FIRST_NAME=#firstName#
</isNotEmpty>
3、二元条件元素的属性: 二元是两个对象进行比较
prepend - 可被覆盖的SQL语句组成部分,添加在语句的前面(可选)
property - 被比较的属性(必选)
compareProperty - 另一个用于和前者比较的属性(必选或选择compareValue)
<isEqual>
<isNotEqual>
<isGreaterThan>
<isGreaterEqual>
<isLessThan>
<isLessEqual>
例子:
<isLessEqual prepend=”AND” property=”age”compareValue=”18”>
ADOLESCENT = ‘TRUE’
</isLessEqual>
4、<iterate>:这属性遍历整个集合,并为List集合中的元素重复元素体的内容。
Iterate的属性:
prepend - 可被覆盖的SQL语句组成部分,添加在语句的前面(可选)
property - 类型为java.util.List的用于遍历的元素(必选)
open - 整个遍历内容体开始的字符串,用于定义括号(可选)
close -整个遍历内容体结束的字符串,用于定义括号(可选)
<iterate prepend=”AND” property=”userNameList”open=”(” close=”)” conjunction=”OR”>username=#userNameList[]# </iterate>= and(username=name1 or username=name2...)
注意:使用<iterate>时,在List元素名后面包括方括号[]非常重要,方括号[]将对象标记为List,以防解析器简单地将List输出成String。