ibatis中的動態SQL:isNotNull,isPropertyAvailable,isNotEmpty,isGreaterThan等標籤用法


prepend   <isNotNull prepend="and" property="firstName" > 
生成的語句不會有多餘的and,因爲dynamic有一個隱藏的屬性:removeFirstPrepend="true", 所以一般要寫上prepend="and",需要的時候它會自動去掉。
 


Ibatis中的動態SQL,主要分爲一元條件和二元條件查詢: 

一元條件查詢關鍵字: 

<isPropertyAvailable> 如果參數有這個屬性查詢條件有效(一般希望一個屬性無論何值時都符合條件時使用)。

<isNotPropertyAvailable> 如果參數沒有有這個屬性查詢條件有效。 
<isNull>      如果參數爲NULL則查詢條件有效。 
<isNotNull>   如果參數不爲NULL則查詢條件有效。 
<isEmpty>     如果參數爲空則查詢條件有效。 
<isNotEmpty>  如果參數不爲空則查詢條件有效。

一元元素的屬性: 
prepend:可被覆蓋的SQL語句組成部分,添加在語句的前面。 
property:被比較的屬性 

二元條件查詢關鍵字:

<isEqual> 如果參數相等於值則查詢條件有效。 

<isNotEqual> 如果參數不等於值則查詢條件有效。 

<isGreaterThan> 如果參數大於值則查詢條件有效。 

<isGreaterEqual> 如果參數大於等於值則查詢條件有效。 

<isLessEqual> 如果參數小於等於值則查詢條件有效。

<isLessThan> 如果參數小於值則查詢條件有效。

如下所示: 

<isLessEqual prepend = ”AND” property = ”age” compareValue = ”18” > 
ADOLESCENT = ‘TRUE’ 
</isLessEqual> 
二元元素的屬性: 
prepend:  可被覆蓋的SQL語句組成部分,添加在語句的前面。 
property:  被比較的屬性 
compareProperty: 另一個被比較的屬性 
compareValue:    被比較的值 
此外,還有其它的元素: 
1.<isParameterPresent> 
如果參數類不爲NULL則查詢條件有效。 
<isNotParameterPresent> 
Checks to see if the parameter object is not present (null). 
實例: 
<isNotParameterPresent prepend=”AND”> 
EMPLOYEE_TYPE = ‘DEFAULT’ 

</isNotParameterPresent>

2.Iterate:這屬性遍歷整個集合,併爲List集合中的元素重複元素體的內容。

  Iterate的屬性:

  prepend - 可被覆蓋的SQL語句組成部分,添加在語句的前面(可選)           

  property - 類型爲java.util.List的用於遍歷的元素(必選)           

  open - 整個遍歷內容體開始的字符串,用於定義括號(可選)          

  close -整個遍歷內容體結束的字符串,用於定義括號(可選)          

  conjunction - 每次遍歷內容之間的字符串,用於定義AND或OR(可選)

 遍歷類型爲java.util.List的元素。 

 例子: 

<iterate prepend="AND"  property="userNameList" open="(" close=")" conjunction="OR"> 

 username=#userNameList[]# 

</iterate>

  1. <dynamic prepend="where questionId in">   
  2. <isNotNull property="actionIds">   
  3. <iterate property="actionIds" open="(" close=")" conjunction=",">   
  4. #actionIds[]#   
  5. </iterate>   
  6. </isNotNull>   
  7. </dynamic>   
點擊打開鏈接

 注意:使用<iterate>時,在List元素名後面包括方括號[]非常重要,方括號[]將對象標記爲List,以防解析器簡單地將List輸出成String。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章