条件查询关键字:
<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:得到两个查询结果的减集,以第一列进行排序