在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()); }