Mysql批量更新的一个坑-&allowMultiQueries=true允许批量更新

前言

        实际上,我们经常会遇到这样的需求,那就是利用Mybatis批量更新或者批量插入,但是,实际上即使Mybatis完美支持你的sql,你也得看看你说操作的数据库是否支持,最近就遇到这样的一个坑。

复制代码
 <foreach collection="batchList" item="detail" separator=";">
            update batch_detail
            <trim prefix="SET" suffixOverrides=",">
                <if test="detail.status != null and detail.status != ''">detail_status = #{detail.status},</if>
                <if test="detail.reason != null and detail.reason != ''">reason = #{detail.reason},</if>
                <if test="detail.updateTime != null">update_time = #{detail.updateTime}</if>
            </trim>
            <where>
                id = #{detail.Id}
            </where>
        </foreach>
复制代码

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

解决方案

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

 

posted @   乖怪丶  阅读(493)  评论(1编辑  收藏  举报
编辑推荐:
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
阅读排行:
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升
· 《HelloGitHub》第 107 期
· 全程使用 AI 从 0 到 1 写了个小工具
· 从文本到图像:SSE 如何助力 AI 内容实时呈现?(Typescript篇)
历史上的今天:
2018-09-17 浅谈@RequestMapping @ResponseBody 和 @RequestBody 注解的用法与区别
欢迎这位客官来到《Mysql批量更新的一个坑-&allowMultiQueries=true允许批量更新 - 乖怪丶 - 博客园》
点击右上角即可分享
微信分享提示