1、<iterate>: 該標籤用於遍歷一個list。它有以下屬性:
prepend:sql語句組成部分,可以被覆蓋,可爲and、or等,該選項是可選的
open:整個遍歷內容開始前設置的字符串,常常設爲‘(’。該選項是可選的
close:整個遍歷內容結束時設置的字符串,常常爲‘)’。該選項是可選的
conjunction:遍歷內容中間間隔的字符串,可爲‘,’、‘and’、‘or’等。該選項是可選的
property:遍歷的list,類型爲java.util.list,該選型明顯是必須的。
例子:
<select id="queryData" parameterClass="java.util.List" resultClass="java.lang.String">
select password from userinfo where user_name in
<iterate open="(" close=")" conjunction=",">
#[]#
</iterate>
</select>
2、<dynamic>:
dynamic主要用於動態拼接sql語句,dynamic元素可以包含多個條件比較元素,並且按照條件比較元素的表述對參數值進行比較,來組裝動態SQL。 這裏主要的條件比較元素包含isGreaterThan、isNotNull、isEmpty……
dynamic中的prepend可以覆蓋第一個爲真子元素的prepend值。例如:
select * from usrinfo
<dynamic prepend="where">
<isNotNull property="name" prepend="and">
name=#name#
</isNotNull>
<isNotNull property="sex" prepend="and">
sex=#sex#
</isNotNull>
</dynamic>
若“name” isNotNull 爲true,則sql語句爲:select * from usrinfo where name=?and sex=?
select * from usrinfo where sex = 'femail'
<dynamic>
<isNotNull property="usrName">
and usrName = #name#
</isNotNull>
<isGreaterThan property="id" compareValue="0">
and id = #id#
</isGreaterThan>
</dynamic>
3、一元條件元素屬性:
prepend(可選)、property(必選)
<isNotNull property="usrName">
<isNull property="usrName">
<isEmpty property="usrName">
<isNotEmpty property="usrName">
4、二元條件查詢屬性:
prepend(可選)、property(必選)、compareProperty、compareValue、後兩個元素至少選一個
<isGreatorThan property="id" compareValue="0">
<isLessThanproperty="id" compareValue="0">
<isGreatorEqualproperty="id" compareValue="0">
<isLessEqual property="id" compareValue="20">
<isEqual propertu="id" compareValue="20">
<isNotEqual property="id" compareValue="20">