使用动态映射

1.
<select parameterClass="string" resultMap="get-user-result" >
<! [CDATA[
select
*
from t_user

<dynamic prepend="WHERE">
<isNotEmpty prepend="AND" property="name">
(name is like #name#)
</isNotEmpty>

<isNotEmpty prepend="AND" property="address">
(address is like #address#)
</isNotEmpty>
</dynamic>
<select>

只有在页面中传入的参数name或者address不为空时,才会触发对应的where子句

2.

利用嵌套,可以实现组合查询

<dynamic prepend="WHERE">
<isNotEmpty prepend="AND" property="name">
(name is like #name#
<isNotEmpty prepend="AND" property="address">
(address is like #address#))
</isNotEmpty>
</isNotEmpty>
</dynamic>

只有用户提供了name的值,address的判断条件才会生效
否则只输入address的值,没有name的值,address的判断条件还是无效的


判定节点属性列表

1.一元判定

一元判定是针对属性值本身的判定,如属性是否为NULL,是否为空值等。
上面示例中isNotEmpty就是典型的一元判定。

一元判定节点有:

节点名描述
<isPropertyAvailable> 参数类中是否提供了此属性
<isNotPropertyAvailable> 与<isPropertyAvailable>相反
<isNull> 属性值是否为NULL
<isNotNull> 与<isNull>相反
<isEmpty> 如果属性为Collection或者String,其size是否<1,
如果非以上两种类型,则通过
String.valueOf(属性值)
获得其String类型的值后,判断其size是否<1
<isNotEmpty> 与<isEmpty>相反。


2. 二元判定

二元判定有两个判定参数,一是属性名,而是判定值,如
<isGreaterThan prepend="AND" property="age"
compareValue="18">
(age=#age#)
</isGreaterThan>

节点名属性值与compareValues的关系
<isEqual> 相等。
<isNotEqual> 不等。
<isGreaterThan> 大于
<isGreaterEqual> 大于等于
<isLessThan> 小于
<isLessEqual> 小于等于
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值