欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

mybatis的批量修改 之 ——」执行多条sql报错

程序员文章站 2022-12-22 15:54:32
昨天写一个批量的修改时发现一个问题单独修改一个可以 一旦多个修改就出错先看代码 update equipment

昨天写一个批量的修改时发现一个问题单独修改一个可以 一旦多个修改就出错
先看代码

	<update id="updateEquipmentList" parameterType="java.util.List">
        <foreach collection="list" item="item"  separator=";">
            update equipment
            <set>
                <if test="item.equipmentSn != null  and item.equipmentSn != ''  ">equipment_sn = #{item.equipmentSn},</if>
                <if test="item.genre != null  and item.genre != ''  ">genre = #{genre},</if>
                <if test="item.merchantsId != null  and item.merchantsId != ''  ">merchants_id = #{item.merchantsId},</if>
                <if test="item.createTime != null  ">create_time = #{item.createTime},</if>
                <if test="item.stopTime != null  ">stop_time = #{item.stopTime},</if>
                <if test="item.startTime != null  ">start_time = #{item.startTime},</if>
                <if test="item.totalNum != null  ">total_num = #{item.totalNum},</if>
                <if test="item.lendNum != null  ">lend_num = #{item.lendNum},</if>
                <if test="item.surplusNum != null  ">surplus_num = #{item.surplusNum},</if>
                <if test="item.loseNum != null  ">lose_num = #{item.loseNum},</if>
                <if test="item.reserve1 != null  and item.reserve1 != ''  ">reserve1 = #{item.reserve1},</if>
                <if test="item.reserve2 != null  and item.reserve2 != ''  ">reserve2 = #{item.reserve2},</if>
                <if test="item.address != null  and item.address != ''  ">address = #{item.address},</if>
                <if test="item.sale != null  and item.sale != ''  ">sale = #{item.sale},</if>
                <if test="item.token != null  and item.token != ''  ">token = #{item.token},</if>
                <if test="item.heartbeat != null  and item.heartbeat != ''  ">heartbeat = #{item.heartbeat},</if>
                <if test="item.timeOut != null  and item.timeOut != ''  ">time_out = #{item.timeOut},</if>
            </set>
            where id = #{item.id}
        </foreach>
    </update>

看着也没啥问题 该传的参数也都传了只要一执行就出现

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 equipment set merchants_id = ? where id = ? at line 3

把报错的sql复制到数据库也可以执行,也是没错的 可就是不行!!!!(当时已经下班也没细看今天周末看了一下)
原来是因为 在Idea中执行多条sql语句的修改(mybatis默认的是执行sql语句是执行单条,所以要执行多条的时候需要进行配置)
所以说吗! 要坚信自己代码没问题错的是别人的规定的问题 既然知道问题出在哪了就去数据源哪里配置一下把 需要在连接字符串中添加上&allowMultiQueries=true,例如:

spring.datasource.url=jdbc:mysql://localhost:3306/plantform?characterEncoding=utf8&useSSL=true&allowMultiQueries=true

不添加这个的时候执行会出错
执行多条修改的方法(.xml配置)
这也算是吃一堑长一智了把,慢慢来!遇到问题即时分析

本文地址:https://blog.csdn.net/qq_41695498/article/details/107300354