INSERT INTO `user` (userName) VALUES"/> INSERT INTO `user` (userName) VALUES">

首頁  >  文章  >  資料庫  >  mybaits批次插入該如何操作

mybaits批次插入該如何操作

PHP中文网
PHP中文网原創
2017-06-21 16:04:121287瀏覽

我們時長在批次插入時,需要取得插入資料的id.

這樣:

 <insert id="insertUser" parameterType="gys.entity.User" keyProperty="userId" useGeneratedKeys="true">INSERT INTO `user`
        (userName)
        VALUES
        (#{userName})</insert>

這樣是沒問題的.

但是有時候牽扯到批量插入,並且獲取插入的id

這樣寫:

<insert id="insertUserBatch1" keyProperty="userId" useGeneratedKeys="true">INSERT INTO `user`
        (userName)
        VALUES<foreach collection="list" separator="," item="item">(#{item.userName})</foreach></insert>

這樣運行後就會出現異常了.

這是因為你用的mybatis版本過低.比如我用的是3.2.2版本,這是mybatis的一個bug.

如果你換成3.4.4版本就沒有問題了.

上面的sql語句換個寫法就又會報異常了(將insert包圍在foreach裡面)

比如:

<insert id="insertUserBatch2"> <foreach collection="list" separator=";" item="item"> INSERT INTO `user`
                (userName)
            VALUES
                (#{item.userName})         </foreach></insert>

同理還有update的批次更新也是有這個問題

<update id="updateUserBatch"><foreach collection="list" item="item" separator=";">update `user` set
                userName=#{item.userName}
            where
                userId=#{item.userId}</foreach></update>

 這是因為mybatis預設是只能執行一條sql語句,

可以再連結路徑的時候加上參數,就可以執行多條sql語句了.allowMultiQueries=true

#

以上是mybaits批次插入該如何操作的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn