zoukankan      html  css  js  c++  java
  • 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()); }

      

  • 相关阅读:
    thinkphp模块设计
    thinkphp自动创建目录
    thinkphp入口文件
    thinkphp目录结构
    thinkphp环境要求
    获取ThinkPHP
    QueryList getData()方法中多次调用来实现递归多级采集。
    PHP count() 函数
    PHP mysqli_affected_rows() 函数
    QueryList 内容过滤
  • 原文地址:https://www.cnblogs.com/taojintianxia/p/4920058.html
Copyright © 2011-2022 走看看