mybatis批量插入報錯:','附近有錯誤
阿新 • • 發佈:2019-02-04
mybatis批量插入的時候報錯,報錯資訊‘,’附近有錯誤
mapper.xml的寫法為
<insert id="insertByBatch">
INSERT INTO USER_LOG (USER_ID, OP_TYPE, CONTENT, IP, OP_ID, OP_TIME) VALUES
<foreach collection="userIds" item="userId" open="(" close=")" separator=",">
(#{rateId}, #{opType}, #{content}, #{ipStr}, #{userId}, #{opTime},
</foreach >
</insert>
列印的sql語句
INSERT INTO USER_LOG (USER_ID, OP_TYPE, CONTENT, IP, OP_ID, OP_TIME) VALUES (
(?, ?, ?, ?, ?, ?) , (?, ?, ?, ?, ?, ?) )
除錯的時候還是把sql複製到navicate中進行檢查,就報了上面的錯。這個錯看起來毫無頭緒,然後就自己重新寫insert語句,發現正確的語句應該為
INSERT INTO USER_LOG (USER_ID, OP_TYPE, CONTENT, IP, OP_ID, OP_TIME) VALUES (?, ?, ?, ?, ?, ?) , (?, ?, ?, ?, ?, ?)
比之前的sql少了外面的括號,此時執行成功,所以mapper.xml中應該把opern=”(” close=”)”刪除即可。
多說一句,批量插入的時候也可以把要插入的資料組裝成List<實體>,這樣就不用傳這麼多的引數了。