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