mybatis foreach標簽


一、批量插入數據

示例:添加訂單商品表

1.模型層的相應代碼

/**
     * 添加訂單商品表
     * @param ordergoods
     * @return
     */
    public boolean addOrdergood(List<Ordergood> ordergoods){
        return session.insert(Ordergood.class.getName()+".addOrdergood", ordergoods)>0;
    }

2.xml文件

<!--添加訂單商品表。因為一次添加的訂單商品可能有多條數據,因此這里進行批量添加。-->
    <insert id="addOrdergood"  parameterType="java.util.List"><!-- parameterType="java.util.List"可以省略,Mybatis會自動判斷參數類型。 -->
        insert into ordergood(oid,gid,count,price,allprice,profit) values
        <foreach collection="list" item="og" separator=","><!-- separator="," 不可以省略;item="og"是集合中每一個元素進行迭代時的別名,可以隨便取。 -->
            (#{og.orders.oid},#{og.goods.gid},#{og.count},#{og.price},#{og.allprice},#{og.profit})
        </foreach>
    </insert>

 

對於foreach標簽的解釋參考了網上的資料,具體如下:

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

關於foreach的具體例子在這里就先不舉,以后有機會可以把每一種情況都舉一個例子列出來。

 

二、查詢中使用foreach

參見:http://blog.csdn.net/bareheadzzq/article/details/8006131

 

附:參考博客:http://chenzhou123520.iteye.com/blog/1583407

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM