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 Plus 批量資料插入功能,yyds!MyBatis
- 【MyBatis】幾種批量插入效率的比較MyBatis
- Mybatis:插入資料返回自增主鍵MyBatis
- Java MyBatis 插入資料庫返回主鍵JavaMyBatis資料庫
- MyBatis中批量插入資料,多重forEach迴圈MyBatis
- 使用Mybatis批量插入大量資料的實踐MyBatis
- Java通過Mybatis實現批量插入資料到Oracle中JavaMyBatisOracle
- MyBatis從插入語句中檢索自動生成的IDMyBatis
- mybatis-plus批量插入saveBatch太慢?我願意稱rewriteBatchedStatements為神MyBatis
- 還用foreach在MyBatis批量插入資料,伺服器還沒崩?MyBatis伺服器
- mybatis批次插入MyBatis
- Mybatis批量操作demoMyBatis
- 使用MySqlBulkLoader批量插入資料MySql
- insert批量插入優化方案優化
- MyBatis 返回結果MyBatis
- 向資料庫中插入一條新的資料,並返回新增資料的ID資料庫
- mybatis 批次插入資料MyBatis
- 使用PrepareStatement實現批量插入操作REST
- 在 JDBC 中獲取插入 IDJDBC
- Mysql在資料插入後立即獲取插入的IdMySql
- Mybatis批量更新三種方式MyBatis
- 刷臉支付代理怎麼做?是否能夠賺錢?
- oracle和mybatis整合,批次插入OracleMyBatis
- PHP配上MySQL實現批量更新插入PHPMySql
- Oracle批量插入資料insert all into用法Oracle
- 正規表示式處理批量插入
- 使用 【Ado.Net】 批量插入資料
- MySQL:JDBC批量插入資料的效率MySqlJDBC
- 列表中,相同id分一組
- db2 sql批量插入一張表插入另一張表DB2SQL
- 人工智慧新風口上,網易是否能夠突圍?人工智慧
- GAN:人工智慧是否能夠自主創造虛擬世界?人工智慧虛擬世界
- vps租用是否能夠解決所有的建站問題?
- Spring-Mybatis的批量執行SpringMyBatis
- Mybatis如何動態生成插入的列及批次插入值MyBatis
- laravel 新增一條資料並返回 IDLaravel
- MySQL 按指定 ID 順序返回結果MySql