zoukankan      html  css  js  c++  java
  • Mysql批量更新的一个坑-&allowMultiQueries=true允许批量更新(转)

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

    问题
            先带大家来看一段sql的配置,

    <update id="updateAllAvailable">
    <foreach collection="skuOptionList" item="item" index="index" open="" close="" separator=";">
    update t_xxx
    <set>
    old_id = #{item.oldId}
    </set>
    where id = #{item.id}
    </foreach>
    </update>

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

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

    扩展
            实际的业务系统里面oracle数据库也用的非常的多,当然,oracle数据库不需要做特殊的配置,但是相应的sql要做变化。

    <update id="updateAllAvailable">
    <foreach collection="skuOptionList" item="item" index="index" open="begin" close="end;" separator=";">
    update t_xxx
    <set>
    old_id = #{item.oldId}
    </set>
    where id = #{item.id}
    </foreach>
    </update>

    总结
            有些时候,遍寻代码而无错也找不到问题的时候,不妨去找找系统环境的问题,说不定,就只在一瞬,问题迎刃而解。
            感谢各位看官。


    ————————————————
    版权声明:本文为CSDN博主「henry-hacker」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/wangmeng951011/article/details/67640027

  • 相关阅读:
    spring 学习-bean创建bean
    [转]spring 学习-bean创建-循环依赖-3
    [转]spring 学习-bean创建-循环依赖-2
    [转]spring 学习-bean创建-循环依赖-1
    2、python2.7,python3.9 ;在不同版本上获得整数类型运行的结果
    记一次Linux bash 命令行卡顿排查之警惕LD_PRELOAD环境变量
    CPU中断数查看与网卡中断绑核
    中华人民共和国 个人信息保护法 (全文学习)八章 七十四条 2021年11月1日起施行
    【模拟试题】旅行
    Vagrant出现的问题整理
  • 原文地址:https://www.cnblogs.com/muxi0407/p/11989522.html
Copyright © 2011-2022 走看看