mybaits批量插入該如何操作

我們時長在批量插入時,需要獲取插入數據的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

? 版權聲明
THE END
喜歡就支持一下吧
點贊8 分享