List 数据分批入库

 直接贴代码,主要运用  

List<E> subList(int fromIndex, int toIndex); 把 List 分割
   /**
     * 保存批价结果
     *
     * @param priceResult 批价结果
     * @throws Exception 异常
     */
    private void savePriceResult(List<AmountPo> priceResult) throws Exception {
        if (CheckUtils.isNotEmpty(priceResult)) {
       //很大的一个list 比如:20W条数据
int size = priceResult.size(); int startIndex = 0;
       //每批入库list大小 比如:5000条一批
int endIndex = (int) MAX_SIZE;
       //定义临时list List
<AmountPo> amountPos; //分批入库 while (true) { endIndex = endIndex > size ? size : endIndex;
          //list.subList 分割成小的list amountPos
= priceResult.subList(startIndex, endIndex); if (amountPos.size() == MAX_SIZE) {
            //执行入库操作 amountDao.batchAdd(amountPos); }
else { //最后一批入库数据 if (CheckUtils.isNotEmpty(amountPos)) { amountDao.batchAdd(amountPos); } break; } startIndex = endIndex; endIndex = (int) (startIndex + MAX_SIZE); } } }

猜你喜欢

转载自www.cnblogs.com/xinxin-ting/p/10439230.html