【推薦閱讀】微服務還能火多久?>>>
我們都知道mybatis在插入單條資料的時候有兩種方式返回自增主鍵:
1、對於支援生成自增主鍵的資料庫:增加 usegeneratekeys和keyproperty ,標籤屬性。
2、不支援生成自增主鍵的資料庫:使用。
insert into author (username, password, email, bio) values
(#, #, #, #)
從官網資料可以看出mybatis是支援批量插入時返回自增主鍵的。
但是在本地測試的時候使用上述方式確實不能返回自增id,而且還報錯(不認識keyproperty中指定的id屬性),然後在網上找相關資料。終於在stackoverflow上面找到了一些資訊。
解決辦法:
1、公升級mybatis版本到3.3.1。官方在這個版本中加入了批量新增返回主鍵id的功能
2、在dao中不能使用@param註解。
下面是具體**過程,可供參考
insert into
(relation_id, summary_id, relation_type)
values
( #, #, #
)
dao實現層**
public listbatchinsertcallid(listshopresourcelist)
為什麼最後返回的引數不是挑用mybatis後的insert的返回值呢,細心的話可以發現,如果使用debug模式觀察,會看到呼叫mybatis後insert的返回值是,也就是空集合元素.
在mybatis3.3.1中,雖然加入了批量新增返回主鍵id的功能,但是它是這樣執行的,在需要新增插入新元素集合物件時,它會需要引數物件,當執行完插入操作後,給之前的引數物件設定id值,也就是改變了需要插入物件集合中的元素的屬性id值,所以接收返回時,返回方法形參引數即可,同樣的位址引用改變了內容,返回後的集合也是改變後的集合。
MyBatis批量插入並返回主鍵
mybatis批量插入 在mysql資料庫中支援批量插入,所以只要配置usegeneratedkeys和keyproperty就可以批量插入並返回主鍵了。比如有個表camera,裡面有camerano,chanindex,cameraname這三個字段,其中camerano是自增主鍵。下面是批量插入...
mybatis批量插入並返回主鍵
mybatis批量插入 在mysql資料庫中支援批量插入,所以只要配置usegeneratedkeys和keyproperty就可以批量插入並返回主鍵了。比如有個表camera,裡面有camerano,chanindex,cameraname這三個字段,其中camerano是自增主鍵。下面是批量插入...
Mybatis 批量插入 返回自增Id
2月18日,mybatis3.3.1解決了此問題。好開心,省了多餘的查詢了。自己測試了一下。例子表 create table user id intnot null auto increment,name varchar 16 null comment 名稱 primary key id pom 依...