1、sql如下:
<update id="batchUpdate" parameterType="java.util.List">
<foreach collection="updateList" item="item" separator=";">
update table_params
<trim prefix="set" suffixOverrides=",">
<if test="item.paramValue!= null and item.paramValue!= ''">
param_value = #{item.paramValue},
</if>
<if test="item.name!= null and item.name!= ''">
name = #{item.name},
</if>
<if test="item.updateTime!= null">
update_time = #{item.updateTime},
</if>
<if test="item.updateBy!= null">
update_by = #{item.updateBy},
</if>
</trim>
where id = #{item.id}
</foreach>
</update>
运行生成的sql直接放到mysql中运行完全没有问题,但是mybatis执行的时候却会报错:
# Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'update table_params
SET param_value = '222',
gui' at line 15
### The error may involve com.yihg.travel.api.dao.TableParamsMapper.batchUpdate-Inline
### The error occurred while setting parameters
解决办法:
这是因为配置mysql的时候没有开启批量插入,不开启的话只能允许操作一条sql语句,所以只需要修改一处即可:将properties配置文件中的数据库连接信息URL后面添加上&allowMultiQueries=true就可以了,问题完美解决。