Mybatis執行批量插入返回資料庫主鍵列表

2021-10-05 03:15:58 字數 1037 閱讀 7062

【推薦閱讀】微服務還能火多久?>>>

我們都知道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 依...