Mybatis批量插入,是否能够返回id列表
第1次代码
void batchAdd(List<Photo> list);
<insert id="batchAdd" parameterType="java.util.List" keyProperty="id" useGeneratedKeys="true">
insert into
photo(bizid,cover,sort,url,name,remark,status,type,addtime,uptime)
values<foreach item="item" index="index" separator="," collection="list">
(#{item.bizid},#{item.cover},#{item.sort},#{item.url},#{item.name},#{item.remark},#{item.status},#{item.type},now(),now())
</foreach>
</insert>
报错
Error getting generated key or setting result to parameter object.
org.apache.ibatis.executor.ExecutorException: Error getting generated key or setting result to parameter object. Cause: org.apache.ibatis.binding.BindingException: Parameter 'id' not found. Available parameters are [list]
Caused by: org.apache.ibatis.binding.BindingException: Parameter 'id' not found. Available parameters are [list]
第2次代码
<insert id="batchAdd" parameterType="java.util.List">
<selectKey resultType="long" keyProperty="id" order="AFTER">
SELECT
LAST_INSERT_ID()
</selectKey>
insert into
photo(bizid,cover,sort,url,name,remark,status,type,addtime,uptime)
values<foreach item="item" index="index" separator="," collection="list">
(#{item.bizid},#{item.cover},#{item.sort},#{item.url},#{item.name},#{item.remark},#{item.status},#{item.type},now(),now())
</foreach>
</insert>
批量插入成功了,但是id是null
第3次代码
Map map = new HashMap();
map.put("list", toAddPhotoList);
void batchAdd2(Map map);
<insert id="batchAdd2" keyProperty="id" useGeneratedKeys="true">
insert into
photo(bizid,cover,sort,url,name,remark,status,type,addtime,uptime)
values<foreach item="item" index="index" separator="," collection="list">
(#{item.bizid},#{item.cover},#{item.sort},#{item.url},#{item.name},#{item.remark},#{item.status},#{item.type},now(),now())
</foreach>
</insert>
批量插入成功了,但是id是null
在解决这个问题的过程中,我最初想实现“批量插入即可,心里默认为和插入1个一样,会有id”,
后来为了“批量插入也要返回主键id”,最后我发现,"这是不能实现的"。
mysql底层,insert values批量插入,返回的是“个数”。
目前,不知道怎么去证实我的猜测。
最后,附上单个插入的sql
<insert id="add" keyProperty="id" useGeneratedKeys="true">
insert into photo(bizid,cover,sort,url,name,remark,status,type,addtime,uptime)
values(#{bizid},#{cover},#{sort},#{url},#{name},#{remark},#{status},#{type},now(),now())
</insert>
Mybatis批量插入,是否能够返回id列表的更多相关文章
- 难题解决:Mycat数据库中间件+Mybatis批量插入数据并返回行记录的所有主键ID
一.mybatis的版本必须为3.3.1及其以上 项目所依赖的mybatis的版本必须为3.3.1及其以上,低版本的不行,保证hap项目的依赖的mybatis的jar的版本必需为需要的版本: 二.在 ...
- MyBatis 批量插入获取自增 id 问题解决
问题: 通过 MyBatis 进行批量插入时,如果我们想获取插入对象所对应的主键 id,做法是直接在 <insert> 标签中直接加入 useGeneratedKeys.keyProper ...
- mybatis批量插入数据
Mybatis在执行批量插入时,如果使用的是for循环逐一插入,那么可以正确返回主键id.如果使用动态sql的foreach循环,那么返回的主键id列表,可能为null,这让很多人感到困惑:本文将分析 ...
- 160421、MyBatis批量插入数据
在程序中封装了一个List集合对象,然后需要把该集合中的实体插入到数据库中,由于项目使用了Spring+MyBatis的配置,所以打算使用MyBatis批量插入,由于之前没用过批量插入,在网上找了一些 ...
- Mybatis 批量插入
一.首先对于批量数据的插入有两种解决方案(下面内容只讨论和Mysql交互的情况) 1)for循环调用Dao中的单条插入方法 2)传一个List<Object>参数,使用Mybatis的批量 ...
- mybatis批量插入数据到oracle
mybatis 批量插入数据到oracle报 ”java.sql.SQLException: ORA-00933: SQL 命令未正确结束“ 错误解决方法 oracle批量插入使用 insert a ...
- springMVC 接收数组参数,mybatis 接收数组参数,mybatis批量插入/批量删除案例
案例是给一个用户赋予多个权限,多个权限用其对应的主键 id 为参数,组成了 一个id数组,传给springMVC,然后springMVC传给mybatis,然后mybatis批量插入.其实类似的场景还 ...
- 解决Oracle+Mybatis批量插入报错:SQL 命令未正确结束
Mybatis批量插入需要foreach元素.foreach元素有以下主要属性: (1)item:集合中每一个元素进行迭代时的别名. (2)index:指定一个名字,用于表示在迭代过程中,每次迭代到的 ...
- MyBatis批量插入数据(MySql)
由于项目需要生成多条数据,并保存到数据库当中,在程序中封装了一个List集合对象,然后需要把该集合中的实体插入到数据库中,项目使用了Spring+MyBatis,所以打算使用MyBatis批量插入,应 ...
随机推荐
- POJ 3181完全背包(+高精)
思路: f[i]表示还剩i空间的方案数 套个高精 (网上有人把它拆成了两个long long) 其实这道题的高精并不难写-.. //By SiriusRen #include <cstdio&g ...
- 2015北京网络赛 J Scores bitset+分块
2015北京网络赛 J Scores 题意:50000组5维数据,50000个询问,问有多少组每一维都不大于询问的数据 思路:赛时没有思路,后来看解题报告也因为智商太低看了半天看不懂.bitset之前 ...
- Ubuntu下通过Firefox Opera Chromium浏览器直接执行java应用程序(打开java jnlp文件)实现在服务器远程虚拟控制台完成远程管理的方法
远程虚拟控制台依赖于java运行环境(jre),在通过浏览器打开链接前,系统必须安装jre环境,远程管理控制台其实就是一个java程序,打开相应的网站会下载一个jnlp(java网络加载协议)的文件, ...
- 使用iVMS-4200 存储录像数据时的设置
1.安装软件时,选择:存储服务器 2.对存储服务器进行配置,具体配置见 配置手册.
- 学习《R数据科学》高清中文PDF+高清英文PDF+源代码
学习R有不会的就查工具书<R数据科学>, 工具不是重点,创造价值才是目的.具体到数据科学,表现形式往往是提供解决方案或者做出某种决策.至于使用什么语言,采用什么工具,不本质.用 R 还是 ...
- 【Django】Session
目录 介绍 Django中操作Session @ 介绍 Cookie虽然在一定程度上解决了"保持状态"的需求,但是由于Cookie本身最大支持4096字节,以及Cookie本身保存 ...
- 洛谷 P1716 双调序列
P1716 双调序列 题目描述 电脑组的童鞋们经常玩一些智力PK小游戏,某月某日,发源于小朋友又发明了一种新的序列:双调序列,所谓的双调呢主要是满足如下条件描述: 假定有n(n<=1000)个整 ...
- ip6tables: ipv6-icmp vs icmp
ip6tables: ipv6-icmp vs icmp资料来源 https://www.jethrocarr.com/2013/02/09/ip6tables-ipv6-icmp-vs-icmp/I ...
- js---10作用域链
<html> <head> <title>scope basic</title> </head> <body> <scri ...
- 6.前端开发必备!Emmet使用手册
转自:https://www.w3cplus.com/tools/emmet-cheat-sheet.html 介绍 Emmet (前身为 Zen Coding) 是一个能大幅度提高前端开发效率的一个 ...