mybatis批量更新报错

mybatis批量更新的mapper语句:

    <update id="batchUpdateVmQueueUp" parameterType="java.util.List">
        <foreach collection="list" item="item" separator=";">
            update vm_queue_up
            <trim prefix="SET" suffixOverrides=",">
                <if test="item.code != null">code = #{item.code},</if>
                <if test="item.queueOrder != null">queue_order = #{item.queueOrder},</if>
                <if test="item.orderNumber != null">order_number = #{item.orderNumber},</if>
                <if test="item.plateNumber != null">plate_number = #{item.plateNumber},</if>
                <if test="item.factoryTime != null">factory_time = #{item.factoryTime},</if>
                <if test="item.queueTime != null">queue_time = #{item.queueTime},</if>
                <if test="item.entryTime != null">entry_time = #{item.entryTime},</if>
                <if test="item.queueNum != null">queue_num = #{item.queueNum}</if>
            </trim>
            where id = #{item.id}
        </foreach>
    </update>

明明自己格式语法都是正确的但在执行的时候就会报错;报错信息如下

### SQL: update vm_queue_up SET queue_order = ?, plate_number = ?, factory_time = ?where id = ? ; update vm_queue_up SET queue_order = ?, plate_number = ?, factory_time = ? where id = ? ; update vm_queue_up SET queue_order = ?, order_number = ?, plate_number = ?, factory_time = ?where id = ? ; update vm_queue_up SET queue_order = ?, order_number = ?, plate_number = ?, factory_time = ? where id = ? ### Cause: java.sql.SQLSyntaxErrorException: 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 vm_queue_up SET queue_order = '2', ' at line 13 ; bad SQL grammar []; nested exception is java.sql.SQLSyntaxErrorException: 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 vm_queue_up SET queue_order = '2',


结果百度才知道原来是mysql的url连接池没有添加参数

allowMultiQueries=true
                url: jdbc:mysql://127.0.0.1:3306/db_nbe2?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&allowMultiQueries=true
告诉mysql允许同时执行多条sql语句(mysql默认未开启同时执行多条sql),至此就能成功执行批量更新啦!!!但这样会导致有sql注入的风险,所以要做好相关的应对措施。
  • 5
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值