原文来源:http://blog.csdn.net/wangmeng951011/article/details/67640027
前言
实际上,我们经常会遇到这样的需求,那就是利用Mybatis批量更新或者批量插入,但是,实际上即使Mybatis完美支持你的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>
总结
有些时候,遍寻代码而无错也找不到问题的时候,不妨去找找系统环境的问题,说不定,就只在一瞬,问题迎刃而解。
感谢各位看官。
看mysql的表创建过程 show create table 表名\G
相关推荐
useSSL=true&useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true&serverTimezone=Asia&&serverTimezone=GMT%2B8 spring.datasource.username=root spring....
1、导入数据库2、使用idea打开项目3、更改jdk版本4、修改数据库连接池如果自己是mysql5版本,请修改配置:spring: datasource: driver-class-name: ...
基于springboot的一个IT人才招聘网站系统源码+数据库,公司可以发布岗位需求,求职者查找岗位并递交简历等。 本地启动部署 2.1 数据库数据源部署 src/main/resources/application.yaml 配置文件: 配置 MySQL 数据库...
基于springboot的一个IT人才招聘网站系统源码+数据库+部署文档(高分毕业设计),含有代码注释,新手也可看懂,个人手打98分项目,导师非常认可的高分项目,毕业设计、期末大作业和课程设计高分必看,下载下来,简单...
MySQL:使用mysqldump在Windows数据库定时备份-- mysqldump --opt --single-transaction=TRUE --user=%user% --password=%password% --host=%host% --protocol=tcp --port=%port% --default-character-set=%charSet%...
数据库-mySQL 3. 建模unity+C# 4. 硬件: + 开发板:NodeMCU集成开发板 + 优点:集成了esp8266芯片 + 语言:C语言 联系方式: 微信公众号:”拼搏的小浣熊“,有个人联系方式。(此项目中遇到的任何问题都可以无偿...
useSSL=false&serverTimezone=UTC&useAffectedRows=true&useUnicode=true&characterEncoding=utf8&allowMultiQueries=true spring.datasource.username=root spring.datasource.password=shen@2017 spring....
然而,批量更新的效率问题一直是一个棘手的问题。近期,我们有了大量的 MySQL 批量更新经验,总结了 MySQL 批量更新的几种方法,并进行了性能测试,旨在找到最高效的更新语句写法。 方法一:批量 Update 批量 ...
在使用Mybatis进行数据库操作时,批量更新是一个常见的需求,特别是在处理大量数据的时候。然而,在实际操作中,可能会遇到批量更新报错的情况。本文将详细分析Mybatis批量更新的报错问题及其解决方法。 首先,报错...
useUnicode=true&characterEncoding=UTF-8"是一个典型的JDBC连接URL,用于建立Java应用与MySQL数据库之间的连接。这个URL包含了多个关键组成部分: 1. **协议**:jdbc,表示使用Java的数据库连接协议。 2. **数据库...
useUnicode=true&characterEncoding=utf-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2B8 username: root password: 123456 # driverClassName: ...
在大数据量、高并发的场景下,批量更新数据库是一个常见的操作。然而,不同的批量更新方法可能带来截然不同的性能表现。 通过实际测试对比了Spring Boot中6种MySQL批量更新方式的效率,并详细记录了每种方法在处理...
毕业设计,微信小程序+SpringBoot后端+MySql开发的医院核酸检测服务系统,内含完整源代码,数据库,论文视频,视频教程 推荐使用:谷歌浏览器 后台地址 ... ... ...在src\main\resources\application.yml中编辑 ...
在大数据量、高并发的场景下,批量更新数据库是一个常见的操作。然而,不同的批量更新方法可能带来截然不同的性能表现。 通过实际测试对比了Spring Boot中6种MySQL批量更新方式的效率,并详细记录了每种方法在处理...
推荐使用:谷歌浏览器 ...useUnicode=true&characterEncoding=utf-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC username: root password: 123456 (数据库密码)
在大数据量、高并发的场景下,批量更新数据库是一个常见的操作。然而,不同的批量更新方法可能带来截然不同的性能表现。 通过实际测试对比了Spring Boot中6种MySQL批量更新方式的效率,并详细记录了每种方法在处理...
推荐使用:谷歌浏览器 前台登录页面 ...useUnicode=true&characterEncoding=utf-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2B8 username: root 数据库用户名
因此,要在MySQL中实现批量更新,你需要将所有`UPDATE`语句拼接成一个大的SQL字符串,然后一次性执行。这可以通过设置数据库连接的`allowMultiQueries=true`属性来实现。例如: ```xml <update id="batchUpdate" ...