直接贴代码,主要运用 spa
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); } } }