我们时长在批量插入时,需要获取插入数据的id.
这样:
<insert id="insertUser" parameterType="gys.entity.User" keyProperty="userId" useGeneratedKeys="true">INSERT INTO `user`
(userName)
VALUES
(#{userName})</insert>
这样是没问题的.
但是有时候牵扯到批量插入,并且获取插入的id
这样写:
<insert id="insertUserBatch1" keyProperty="userId" useGeneratedKeys="true">INSERT INTO `user`
(userName)
VALUES<foreach collection="list" separator="," item="item">(#{item.userName})</foreach></insert>
这样运行后就会出现异常了.
这是因为你用的mybatis版本过低.比如我用的是3.2.2版本,这是mybatis的一个bug.
如果你换成3.4.4版本就没有问题了.
上面的sql语句换个写法 就又会报异常了(将insert包围在foreach里面)
比如:
<insert id="insertUserBatch2"> <foreach collection="list" separator=";" item="item"> INSERT INTO `user`
(userName)
VALUES
(#{item.userName}) </foreach></insert>
同理还有update的批量更新也是有这个问题
<update id="updateUserBatch"><foreach collection="list" item="item" separator=";">update `user` set
userName=#{item.userName}
where
userId=#{item.userId}</foreach></update>
这是因为mybatis默认是只能执行一条sql语句,
可以再链接路径的时候加上参数,就可以执行多条sql语句了.allowMultiQueries=true
编辑推荐:
- mybaits批量插入该如何操作02-28
- mysqlslap的使用方法介绍02-28
- Mysql学习笔记02-28
- mysql基础语法有哪些?02-28
- MySQL中基于mysqldump和二进制日志log-bin进行逻辑备份以及基于时间点的还原02-28
- 不能够连接到主机(名称为localhost)上的MySQL服务”02-28
- MySQL架构02-28
- 总结和Mysql相关的知识02-28
下一篇:
相关推荐
-
雷神推出 MIX PRO II 迷你主机:基于 Ultra 200H,玻璃上盖 + ARGB 灯效
2 月 9 日消息,雷神 (THUNDEROBOT) 现已宣布推出基于英
-
制造商 Musnap 推出彩色墨水屏电纸书 Ocean C:支持手写笔、第三方安卓应用
2 月 10 日消息,制造商 Musnap 现已在海外推出一款 Oce
热文推荐
- mysqlslap的使用方法介绍
mysqlslap的使用方法介绍
26-02-28 - Mysql学习笔记
Mysql学习笔记
26-02-28 - MySQL中基于mysqldump和二进制日志log-bin进行逻辑备份以及基于时间点的还原
- 不能够连接到主机(名称为localhost)上的MySQL服务”
不能够连接到主机(名称为localhost)上的MySQL服务”
26-02-28 - MySQL架构
MySQL架构
26-02-28 - MyEclipse怎么连接数据库?
MyEclipse怎么连接数据库?
26-02-28 - 什么是latch?latch与lock的区别
什么是latch?latch与lock的区别
26-02-28 - 数据库数据对比自动生成sql教程分享
数据库数据对比自动生成sql教程分享
26-02-28 - MySQL分页优化的测试案例
MySQL分页优化的测试案例
26-02-28 - MySQL的事务隔离级别实例教程
MySQL的事务隔离级别实例教程
26-02-28
