原文来源: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....
基于springboot的一个IT人才招聘网站系统源码+数据库,公司可以发布岗位需求,求职者查找岗位并递交简历等。 本地启动部署 2.1 数据库数据源部署 src/main/resources/application.yaml 配置文件: 配置 MySQL 数据库...
useUnicode=true&characterEncoding=utf-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2B8 username: root password: 123456 # driverClassName: ...
比较集中mysql批量更新的方式,推荐一种效率最高的更新语句写法
毕业设计,微信小程序+SpringBoot后端+MySql开发的医院核酸检测服务系统,内含完整源代码,数据库,论文视频,视频教程 推荐使用:谷歌浏览器 后台地址 ... ... ...在src\main\resources\application.yml中编辑 ...
推荐使用:谷歌浏览器 ...useUnicode=true&characterEncoding=utf-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC username: root password: 123456 (数据库密码)
数据库-mySQL 3. 建模unity+C# 4. 硬件: + 开发板:NodeMCU集成开发板 + 优点:集成了esp8266芯片 + 语言:C语言 联系方式: 微信公众号:”拼搏的小浣熊“,有个人联系方式。(此项目中遇到的任何问题都可以无偿...
/usr/local/webserver/mysql/bin/mysql_install_db --basedir=/usr/local/webserver/mysql --datadir=/data0/mysql/3306/data --user=mysql vi /data0/mysql/3306/my.cnf 输入 [client] character-set-server = utf...
bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql/mysql-5.7.22/ --datadir=/usr/local/mysql/mysql-5.7.22/data --lc_messages_dir=/usr/local/mysql/mysql-5.7.22/share --lc_messages=en_US ...
mysql5.5升级的所有包。 1、安装MySQL 5.5.x的yum源: ... 2、安装MySQL客户端的支持包: yum install libmysqlclient15 --enablerepo=...5、启动MySQL系统服务,更新数据库: /etc/init.d/mysqld restart mysql_upgrade
睿思BI-开源商业智能,数据可视化系统(开源版) ...useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true&serverTimezone=GMT+8 jdbc . username = root jdbc . password = 12345678 src / main
在mysql里建一个数据库first,以及在数据库里建一个表about 命令:create database first; 为数据库设置权限(用户和密码) 命令:grant all privileges on first.* to test@localhost identified by “123456”;...
basedir=D:\mysql-8.0.26-winx64\mysql-8.0.26-winx64 # 设置mysql数据库的数据的存放目录 ---------是你的文件路径data文件夹自行创建 #datadir=E:\mysql\mysql\data # 允许最大连接数 max_connections=200 # 允许...
mysql驱动包 mysql-connector-java-5.1.13-bin.jar 方便快捷获取。。。
mysql-connector-java-5.1.7-bin.jar
最新版的mysql8精简版使用 mysql-8.0.13-winx64-4.zip 启动方式为: 先初始化 ./mysqld.exe --initialize-insecure --user=mysql 再启动 .\mysqld.exe --console
Java支持mysql8.0x的jdbc驱动和c3p0库,包含如下三个jar包 c3p0-0.9.5.2.jar mchange-commons-java-0.2.15.jar mysql-connector-java-8.0.12.jar JDBC驱动类库名称变化 driverClass 由原来的 ...
chown -R mysql:mysql /usr/local/mysql cp support-files/my-medium.cnf /etc/my.cnf cd /usr/local/mysql/ ./scripts/mysql_install_db --user=mysql /usr/local/mysql/bin/mysqld_safe --user=mysql & ...
mysql-connector-java-5.1.27.jar mysql-connector-java-5.1.27.jar
连接mysql: 新的MySQL驱动模板和mysql-connector-java-8-0-16 连接模板: jdbc.driver=com.mysql.cj.jdbc.Driver jdbc.url=jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=...