项目场景:
今天项目中需要将查出的实体类集合批量更新,结果一直报sql语法错误,真的有点挠头。
问题描述
就是下面这条sql:
<update id="batchUpdateTaskDeadlineTime" parameterType="java.util.List">
start transaction ;
<foreach collection="list" index="index" item="item">
update evt_task set task_deadline_time = #{item.taskDeadlineTime} where evt_task_id = #{item.evtTaskId} ;
</foreach>
commit ;
</update>
我感觉他正常的很,但是报错:
原因分析:
根据国际管理,遇到bug先看看网友怎么说,于是找到了:
默认情况下,数据库是不支持执行这样由 “;” 号拼接的长串的,执行的时候会报错,提示说执行的SQL有语法错误。
解决方案:
需要通过在数据库连接URL中指定allowMultiQueries参数值为true告诉数据库以支持 "; " 号分隔的多条语句的执行。
例:
spring:
datasource:
url:jdbc:mysql://localhost:3306/test?allowMultiQueries=true