Mybatis中mapper檔案中的兩層迴圈

孫悟空空發表於2016-01-18

Mybatis中mapper檔案中的兩層迴圈

導言

使用mapper.xml檔案來儲存和執行sql語句是Mybatis框架中重要的應用。在mapper.xml檔案中對List資料的迴圈遍歷較為普遍和常用,而兩層或多層迴圈是大家不常用的。下面簡單介紹一下吧!

從單層迴圈說起

mapper.java檔案中的getData函式 :

 public getData(@("param") List<String> param);

mapper.xml中getData的sql :

 <select id="getData">
    select * from table t where t.id in
      <foreach item="item" index="index" collection="dataList" open="(" close=")" separator=",">
         #{dataList}
      </foreach>
 </select>

分析 :
getData傳送過來的是一個List型別的資料,因此需要單層迴圈即可

兩層迴圈

info類 :

public class Info{
  public String name;
  public List<String> ids;
}

mapper.java中用到info類的函式 :

 public getData(@("param") List<Info>);

mapper.xml中getData的sql :

<select id="getData">
    select * from table t where t.id in
      <foreach item="item" index="index" collection="dataList">
         <foreach item="idItem" index="index" collection="item.ids" open="(" close=")" separator=",">
            #{idItem}
         </foreach>
      </foreach>
 </select>

注意 :

collection=”item.ids” 為多層迴圈的關鍵

後序

以上為Mybaits框架mapper.xml檔案使用多層迴圈一個方面。對於處理map等更為複雜資料的處理,筆者還不知。等待高手指點吧!

相關文章