先看代码:
<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了,
再附带一个批量插入和删除的配置;
<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>