myBatis獲取批量插入數據的主鍵id


在myBatis中獲取剛剛插入的數據的主鍵id是比較容易的 , 一般來說下面的一句話就可以搞定了 , 網上也有很多相關資料去查.

@Options(useGeneratedKeys = true, keyProperty = "money_record_id")

但是相比較 , 批量插入數據時獲取相數據的主鍵Id就會變得非常難了 , 上面的辦法是沒用的 . 可以按照如下辦法去解決 : 

1.新建一個sql如下 , 在一個事務中 , 可以通過如下sql獲取到批量插入的數據的第一條數據的主鍵id : 

SELECT LAST_INSERT_ID()

2.鑒於在一個事務中所有的id都是連續的 , 可以反推出第一條到最后一條的所有插入的數據的主鍵id

// 批量插入數據
moneyRecordMapper.addBatchMoneyRecord(moneyRecordList);

// 獲取批量數據中的第一條數據id
int lastId = moneyRecordMapper.getLastInsertId();

// 通過循環獲取所有插入數據庫數據的主鍵id for (int counter = 0; counter < moneyRecordList.size(); counter++) {
  MoneyRecord moneyRecord = moneyRecordList.get(counter);
  moneyRecord.setId(lastId + counter);
  logger.info("正在入庫的money_record為 : " + moneyRecord.toString()); }

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM