INSERT INTO `user` (userName) VALUES"/> INSERT INTO `user` (userName) VALUES">
我們時長在批次插入時,需要取得插入資料的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中文網其他相關文章!