在默认情况下,一次性发过去的多条sql是不合法的。
想要让mysql一次执行多条sql语句,必须进行手动设置。
让mysql驱动开启批量执行sql的开关。
怎么开启呢?在拼装mysql链接的url时,为其加上allowMultiQueries参数,设置为true,如下:
jdbc.jdbcUrl=jdbc:mysql://127.0.0.1:3306/database?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true
在每条sql语句后面插入分隔符“;”
<if test="list!=null">
<foreach close="" collection="list" index="index" item="item" open="" separator=";"> update items set name = #{item.name,jdbcType=VARCHAR}, price = #{item.price,jdbcType=VARCHAR}, pic = #{item.pic,jdbcType=VARCHAR}, detail = #{item.detail,jdbcType=LONGVARCHAR}, createtime = #{item.createtime,jdbcType=VARCHAR} where id = #{item.id,jdbcType=INTEGER} </foreach>
</if>