當前位置:編程學習大全網 - 源碼下載 - 如何獲取mybaitis批量插入返回的自增ID?

如何獲取mybaitis批量插入返回的自增ID?

1.對於支持生成自增長主鍵的數據庫:useGenerateKeys和keyProperty。

2.不支持生成自增主鍵的數據庫:

但是批量插入的數據如何返回自增主鍵,網上還是比較少看到,至少百度的結果比較少。

Mybatis官網信息提供如下:

首先,如果您的數據庫支持自動生成的鍵字段(例如MySQL和SQL Server),那麽您可以簡單地設置useGeneratedKeys="true "並將keyProperty設置為target屬性,這樣就完成了。例如,如果上面的Authortable為id使用了自動生成的列類型,則該語句將修改如下:

& ltinsert id = " insert author " useGeneratedKeys = " true "

keyProperty = " id " & gt

插入作者(用戶名、密碼、電子郵件、簡歷)

值(# {用戶名}、# {密碼}、# {電子郵件}、# {簡歷})

& lt/insert & gt;

如果您的數據庫也支持多行插入,您可以傳遞壹個作者列表或數組,並檢索自動生成的鍵。

& ltinsert id = " insert author " useGeneratedKeys = " true "

keyProperty = " id " & gt

插入作者(用戶名、密碼、電子郵件、簡歷)值

& ltforeach item = " item " collection = " list " separator = "," & gt

(#{item.username}、#{item.password}、#{item.email}、#{item.bio})

& lt/foreach & gt;

& lt/insert & gt;

從官網數據可以看出,Mybatis支持批量插入時返回自增主鍵。(百度說不支持,所以是個笑話。)

但是在本地測試中使用上述方法時,確實無法返回自增id,還報錯(不知道keyProperty中指定的Id屬性),然後在網上尋找相關資料。終於找到了壹些關於Stackoverflow的信息。

解決方案:

1.將Mybatis的版本升級到3.3.1。

2.不能在Dao中使用@param批註。

3.在Mapper.xml中使用list變量來接受Dao中的集合。

參考地址:

/questions/18566342/mybatis-use-generated-keys-for-batch-insert

/questions/28453475/mybatis-getting-id-from-inserted-array-of-object-returns-error

/mybatis/mybatis-3/pull/324

/questions/28453475/mybatis-getting-id-from-inserted-array-of-object-returns-error #

/Abel 533/mybatis-3/blob/master/src/main/Java/org/Apache/ibatis/executor/keygen/JDBC 3 key generator . Java

  • 上一篇:我叫mt4電腦配置要求
  • 下一篇:apache的安裝配置啟用
  • copyright 2024編程學習大全網