1. 程式人生 > >MyBatis傳入參數為集合、數組SQL寫法

MyBatis傳入參數為集合、數組SQL寫法

and pos collect pro 集合 IT tail -a not

參考:http://blog.csdn.net/small____fish/article/details/8029030

foreach的主要用在構建in條件中,它可以在SQL語句中進行叠代一個集合。foreach標簽的屬性主要有item,index,collection,open,separator,close。

  • item  表示集合中每一個元素進行叠代時的別名,隨便起的變量名;
  • index  指定一個名字,用於表示在叠代過程中,每次叠代到的位置,不常用;
  • open  表示該語句以什麽開始,常用“(”;
  • separator表示在每次進行叠代之間以什麽符號作為分隔符,常用“,”;
  • close  表示以什麽結束,常用“)”。

在使用foreach的時候最關鍵的也是最容易出錯的就是collection屬性,該屬性是必須指定的,但是在不同情況下,該屬性的值是不一樣的,主要有一下3種情況:

    1. 如果傳入的是單參數且參數類型是一個List的時候,collection屬性值為list .
    2. 如果傳入的是單參數且參數類型是一個array數組的時候,collection的屬性值為array .
    3. 如果傳入的參數是多個的時候,我們就需要把它們封裝成一個Map了,當然單參數也可以封裝成map,實際上如果你在傳入參數的時候,在MyBatis裏面也是會把它封裝成一個Map的,
      map的key就是參數名,所以這個時候collection屬性值就是傳入的List或array對象在自己封裝的map裏面的key
      .

另常用判斷:

判斷集合不為空

ibatisMyBatis

<isNotEmpty property="key" prepend="AND">

  <!-- your SQL -->

</isNotEmpty>

<if test="key != null and key.size() > 0">

  <!-- your SQL -->

</if>

判斷數組不為空

ibatisMyBatis

<isNotEmpty property="key" prepend="AND">

  <!-- your SQL -->

</isNotEmpty>

<if test="key != null and key.length > 0">

  <!-- your SQL -->

</if>

註意:ibatis的AND在標簽裏面設置,MyBatis只能寫在sql裏面。

MyBatis傳入參數為集合、數組SQL寫法