Mybatis批量插入,是否能夠返回id列表
第1次程式碼
void batchAdd(List<Photo> list);
報錯
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次程式碼
批量插入成功了,但是id是null
第3次程式碼
Map map = new HashMap();
map.put("list", toAddPhotoList);
void batchAdd2(Map map);
批量插入成功了,但是id是null
在解決這個問題的過程中,我最初想實現“批量插入即可,心裡預設為和插入1個一樣,會有id”,
後來為了“批量插入也要返回主鍵id”,最後我發現,"這是不能實現的"。
mysql底層,insert values批量插入,返回的是“個數”。
目前,不知道怎麼去證實我的猜測。
最後,附上單個插入的sql
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>
相關文章
- Java書籤 #MyBatis之批量插入並返回自增主鍵idJavaMyBatis
- MyBatis 批量插入資料MyBatis
- Mybatis批量插入Oracle、MySQLMyBatisOracleMySql
- mybatis插入資料、批量插入資料MyBatis
- MyBatis + MySQL返回插入成功後的主鍵idMyBatisMySql
- MyBatis Plus 批量資料插入功能,yyds!MyBatis
- 【MyBatis】幾種批量插入效率的比較MyBatis
- Java MyBatis 插入資料庫返回主鍵JavaMyBatis資料庫
- Mybatis:插入資料返回自增主鍵MyBatis
- 使用Mybatis批量插入大量資料的實踐MyBatis
- MyBatis insert操作插入,返回主鍵from官方MyBatis
- MyBatis中批量插入資料,多重forEach迴圈MyBatis
- MyBatis 註解版(五)Spring boot 註解系列 插入物件返回 idMyBatisSpring Boot物件
- Java通過Mybatis實現批量插入資料到Oracle中JavaMyBatisOracle
- java中批量插入資料jdbc hibernate Mybatis使用方式JavaJDBCMyBatis
- mybatis-plus批量插入saveBatch太慢?我願意稱rewriteBatchedStatements為神MyBatis
- mybatis中使用foreach構造多like查詢及批量插入MyBatis
- mybatis批次插入MyBatis
- mybatis批量操作MyBatis
- 還用foreach在MyBatis批量插入資料,伺服器還沒崩?MyBatis伺服器
- oracle批量插入資料Oracle
- MongoDB不支援批量插入MongoDB
- Mybatis批量操作demoMyBatis
- MyBatis在Oracle中插入資料並返回主鍵的問題解決MyBatisOracle
- MyBatis 返回(批次)新增資料的自增idMyBatis
- MyBatis 返回結果MyBatis
- mark mybatis 返回booleanMyBatisBoolean
- .net Excel 批量插入效能慢Excel
- mybatis查詢列表MyBatis
- castor中是否能夠設定xml的encodingASTXMLEncoding
- MyBatis從插入語句中檢索自動生成的IDMyBatis
- 刷臉支付代理怎麼做?是否能夠賺錢?
- 人工智慧新風口上,網易是否能夠突圍?人工智慧
- insert批量插入優化方案優化
- 使用PrepareStatement實現批量插入操作REST
- 使用MySqlBulkLoader批量插入資料MySql
- hibernateHQl批量插入、刪除、更新
- 大表資料插入批量提交