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
推荐阅读
-
mybatis的批量修改 之 ——」执行多条sql报错
-
MyBatis MapperProvider MessageFormat拼接批量SQL语句执行报错的原因分析及解决办法
-
mybatis中执行多条sql语句的方式
-
Oracle批量执行sql语句之禁用所有表的外键
-
使用mybatis的interceptor修改执行sql以及传入参数方式
-
MyBatis MapperProvider MessageFormat拼接批量SQL语句执行报错的原因分析及解决办法
-
mybatis中执行多条sql语句的方式
-
Oracle批量执行sql语句之禁用所有表的外键
-
使用mybatis的interceptor修改执行sql以及传入参数方式