ibatis  SQL里进行条件查询

本文介绍了SQL中常用的条件查询关键字及其用法,包括isEqual、isNotNull等,并展示了如何使用这些关键字来构建复杂的查询条件。此外,还讲解了SQL中的集合操作如union、intersect等的使用方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

条件查询关键字:

    <isPropertyAvailable>  如果参数有使用则查询条件有效。 
    <isNotPropertyAvailable> 如果参数没有使用则查询条件有效。 
    <isNull> 如果参数为NULL则查询条件有效。 
    <isNotNull> 如果参数不为NULL则查询条件有效。 
    <isEmpty> 如果参数为空则查询条件有效。 
    <isNotEmpty> 如果参数不为NULL或者“”则查询条件有效。参数的数据类型为Collection。 

String类型的参数,数不为NULL或“”,如下所示: 
<isNotEmpty  prepend=”AND” property=”firstName” > 
    FIRST_NAME=#firstName# 
</isNotEmpty> 

    <isEqual> 如果参数相等于值则查询条件有效。 
    <isNotEqual> 如果参数不等于值则查询条件有效。 
    <isGreaterThan> 如果参数大于值则查询条件有效。 
    <isGreaterEqual> 如果参数等于值则查询条件有效。 
    <isLessEqual> 如果参数小于值则查询条件有效。如下所示: 

<isLessEqual  prepend = ”AND” property = ”age” compareValue = ”18” > 
    ADOLESCENT = ‘TRUE’ 
</isLessEqual> 

元素属性:

    prepend:  可被覆盖的SQL语句组成部分,添加在语句的前面。 
    property:  被比较的属性 
    compareProperty: 另一个被比较的属性 
    compareValue:    被比较的值 

具体应用:

1. <isEqual>根据参数值判断,相当于equals,通常是判断状态值;

    property=" "是SQL里的参数名,compareValue=" "是要判断比较的值;

    示例:根据开房方式查询原房价,checkType是开房方式,等于1是天房,查询天房房价,等于2是钟点房,查询钟点房房价。

<!-- 查询原房价 -->
<select id="getRoomFormerPrice"  parameterClass="HashMap" resultClass="int">
    select 
    <isEqual property="checkType" compareValue="1">
        ROOM_PRICE
    </isEqual>
    <isEqual property="checkType" compareValue="2">
        HOUR_ROOM_PRICE
    </isEqual>
    from
        t_roomprice_scheme
    where
        ROOM_TYPE_ID=#roomTypeId#
    AND
        ROOM_SCHEME_ID=#roomSchemeId#
    AND 
        HOTEL_ID=#hotelId#
</select>

2.<isNotNull>判断property字段是否是null,通常用于条件查询:

<isNotNull prepend="AND" property="id" >
    a.id=#id#
</isNotNull>

集合操作 并 交 差运算:

 union :得到两个查询结果的并集,并且自动去掉重复行。不会排序

 union all:得到两个查询结果的并集,不会去掉重复行。也不会排序

 intersect:得到两个查询结果的交集,并且按照结果集的第一个列进行排序

 minus:得到两个查询结果的减集,以第一列进行排序

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值