mybatis批量更新语法错误问题解决

        在平常开发项目的时候,我们经常会遇到这样的需求,那就是利用Mybatis批量更新或者批量插入,但是,实际上即使Mybatis完美支持你的sql,你也得看看你说操作的数据库是否支持。

问题:

            <!-- 批量更新,通过接收传进来的参数list进行循环着组装sql -->  
		<update id="batchUpdate" parameterType="java.util.List">
		    <!-- 接收list参数,循环着组装sql语句,注意for循环的写法  
		         separator=";" 代表着每次循环完,在sql后面放一个分号  
		         item="item" 循环List的每条的结果集
		         collection="list" list 即为 map传过来的参数key -->  
		    <foreach collection="list" separator=";" item="item">  
		        UPDATE `git_commit_logs`
				SET `insert_count` = #{item.insertCount},  
				`delete_count` = #{item.deleteCount},  
				`effective_count` = #{item.effectiveCount},  
				`file_count` = #{item.fileCount}
				WHERE
					`id` = #{item.id} 
		    </foreach>  
		</update>  

        看上去没有一点问题,这里用到了Mybatis的动态sql,实际就是拼sql,不过这个繁杂的工作交给Mybatis帮我们去做了。可是,只要一执行就要报语法错误。调试了好久,发现只要传一个值进去就没有问题,就是list的成员只有一个。



解决:

         后来发现,原来mysql的批量更新是要我们主动去设置的, 就是在数据库的连接url上设置一下,加上* &allowMultiQueries=true *即可。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

你认识小汐吗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值