先看代碼:
<update id = "updateList" parameterType="java.util.ArrayList">
<foreach collection="list" item="item" index="index" open="" close="" separator=";">
update
test_table
set
`age` = #{item.age}
where `name` = #{item.name}
</foreach>
</update>
代碼沒有任何問題,傳入一個list,什麼參數都封裝的很好,但就是一直報錯,這就很惱火,最後查了一下發現,Mybatis映射檔案中的sql語句不允許 “;” 符号。這就找到問題的根源了,
處理辦法:
在連接配接資料庫的url後邊加上 &allowMultiQueries=true 這就OK了,
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyZuBnLwITNzMTO1YTMyATOwkTMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
再附帶一個批量插入和删除的配置;
<insert id = "insertList" parameterType="java.util.ArrayList">
INSERT INTO test_table ( `name`,`age`)
VALUES
<foreach collection="list" item="item" index="index" separator=",">
(
#{item.name},#{item.age}
)
</foreach>
</insert>
<delete id="deleteData">
delete from test_table where id in
<foreach collection="list" index="index" item="item" separator="," open="(" close=")" >
#{item.id}
</foreach>
</delete>