1. 程式人生 > >ibatis  SQL裡進行條件查詢

ibatis  SQL裡進行條件查詢

條件查詢關鍵字:

    <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:得到兩個查詢結果的減集,以第一列進行排序