ibatis 標籤

<iterate>標籤以一個集合或數組類型的特性作爲其property屬性值,ibatis通過遍歷這個集合(數組)來從一組中重複產生某種sql小片段。這些小片段以conjunction屬性值作爲分隔符連接起來,從而形成一個有意義的sql語句片段,open屬性值將作爲所呈現的值列表的前綴,close屬性值將作爲所呈現的值列表的後綴,最終動態形成一個完整合法的sql。


<iterate>標籤屬性

property(必須的)包含列表的參數的特性。

prepend(可選的)該值用於作爲前綴附加到標籤的結果內容體前。只有在以下3種情況下,prepend值纔不會被加爲前綴:(a)當標籤的結果內容體爲空時;(2)如果該標籤第一個產生內容體,並且它被嵌套在一個removeFirstPrepend屬性被設置爲true的父標籤時;(c)如果此標籤是跟在prepend屬性取值非空的<dynamic>標籤後的第一個生成內容體的標籤。

open(可選的)該值用於作爲前綴加到標籤的結果內容體前。如果結果內容體前爲空,open值將不會被附加到其前面。open值將在prepend屬性值被添加前綴之前先被添加前綴。例如,假設prepend=“or” 而open=“(”,則最終得到的組合前綴將會是“or(“。

close(可選的)該值用於作爲後綴附加到標籤的結果內容體後,如果結果內容體爲空,則close值將不起作用。

conjunction(可選的)該值用於連接ibatis遍歷集合(數組)時重複產生那些sql小片段

removeFirstPrepend(可選的)該值用於決定第一個產生內容的嵌套子標籤是否移除其prepend值。


如何使用<iterate>標籤來爲sql語句構建更加複雜的where字句

示例:

。。。

<select id="getProducts" parameterClass="Product"

               resultClass="Product">

   select * from products

<dynamic prepend="where productType in">

      <iterate property="productTypes"

                     opne="(" close=")"

                     conjunction=",">

      productType=#productType[]#

     </iterate>

</dynamic>

</select>

。。。


上例中,我們創建了一個select語句,然後遍歷一組產品類型(product type) 以爲其構造了一個更加複雜的過濾器。

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