ibatis dynamic label (收集)

动态标签分类:1<dynamic>,2 二元标签,3 一元标签,4 <iterate>
这四种标签以及他们的子标签具有共同的属性prepend,open,close
1 <dynamic>



Xml代码
<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),那么加上下面的语句(and acc_id=#id#) ACC_ID-->
= #id#
</isGreaterThan>
</dynamic>
order by ACC_LAST_NAME
</statement>

<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),那么加上下面的语句(and acc_id=#id#) ACC_ID-->
= #id#
</isGreaterThan>
</dynamic>
order by ACC_LAST_NAME
</statement>


一元条件元素的属性:
prepend - 可被覆盖的SQL语句组成部分,添加在语句的前面(可选)
property - 被比较的属性(必选)

<isPropertyAvailable> 检查是否存在该属性(存在parameter bean的属性)。
<isNotPropertyAvailable> 检查是否不存在该属性(不存在parameter bean的属性)。
<isNull> 检查属性是否为null。
<isNotNull> 检查属性是否不为null。
<isEmpty> 检查Collection.size()的值,属性的String或String.valueOf()值,是否为null或空(“”或size() < 1)。
<isNotEmpty> 检查Collection.size()的值,属性的String或String.valueOf()值,是否不为null或不为空(“”或size() > 0)。
例子:
<isNotEmpty prepend=”AND” property=”firstName” >
FIRST_NAME=#firstName#
</isNotEmpty>

二元条件元素的属性: 二元是两个对象进行比较
prepend - 可被覆盖的SQL语句组成部分,添加在语句的前面(可选)
property - 被比较的属性(必选)
compareProperty - 另一个用于和前者比较的属性(必选或选择compareValue)
compareValue - 用于比较的值(必选或选择compareProperty)

<isEqual> 比较属性值和静态值或另一个属性值是否相等。
<isNotEqual> 比较属性值和静态值或另一个属性值是否不相等。
<isGreaterThan> 比较属性值是否大于静态值或另一个属性值。
<isGreaterEqual> 比较属性值是否大于等于静态值或另一个属性值。
<isLessThan> 比较属性值是否小于静态值或另一个属性值。
<isLessEqual> 比较属性值是否小于等于静态值或另一个属性值。
例子:
<isLessEqual prepend=”AND” property=”age” compareValue=”18”>
ADOLESCENT = ‘TRUE’
</isLessEqual>

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

<iterate prepend=”AND” property=”userNameList” open=”(” close=”)” conjunction=”OR”> username=#userNameList[]# </iterate> = and(username=name1 or username=name2...)



注意:使用<iterate>时,在List元素名后面包括方括号[]非常重要,方括号[]将对象标记为List,以防解析器简单地将List输出成String。
[color=darkred][/color]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值