动态Mapped Statement

先举例:
[code]
<select id="dynamicGetAccountList" cacheModel="account-cache" resultMap="account-result">
select * from ACCOUNT
<isGreaterThan prepend="and" property="id" compareValue="0">
where ACC_ID=#id#
</isGreaterThan>
order by ACC_LAST_NAME
</select>
[/code]
例子说明:
如果属性"id"的值大于0,那么整个语句就是:
[code]
select * from ACCOUNT
where ACC_ID=#id#
order by ACC_LAST_NAME
[/code]
如果值小于0,那么sql语句就是:
[code]
select * from ACCOUNT
order by ACC_LAST_NAME
[/code]
更复杂的例子:
[code]
<select id="dynamicGetAccountList" resultMap="account-result">
select * from ACCOUNT
<dynamic prepend="WHERE">
<isNotNull prepend="AND" property="firstName">
(ACC_FIRST_NAME=#firstName#
<isNotNull prepend="OR" property="lastName">
ACC_LAST_NAME=#lastName#
</isNotNull>
)
</isNotNull>
<isGreaterThan prepend="and" property="id" compareValue="0">
ACC_ID=#id#
</isGreaterThan>
</dynamic>
order by ACC_LAST_NAME
</select>
[/code]
[b]注解:[/b]
prepend:可被覆盖的SQL语句组成部分
property:被比较的属性
compareProperty:另一个用于和前者比较的属性
compareValue用于比较的值
<isEqual>
<isNotEqual>
<isGreaterThan>
<isGreaterEqual>
<isLessThan>
<isLessEqual>

<isPropertyAvailable>:检查是否存在该属性
<isNotPropertyAvailable>:
<isNull>:检查属性是否为null
<isNotNull>
<isEmpty>:检查Collection.size()的值,属性String或String.valueOf()值是否为null或空
<isNotEmpty>:

<isParameterPresent>:检查是否存在参数对象(不为null)

<iterate>遍历集合:
[code]
<iterate prepend="and" property="userNameList" open="(" close=")" conjunction="or">
username=#userNameList[]#
</iterate>
[/code]
property属性:类型为java.util.List的用于遍历的元素
open属性:整个遍历内容开始的字符串,用于定义括号
close属性:整个便利内容结束的字符串
conjunction:每次遍历内容之间的字符串,用于定义AND或OR
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值