有时候我们会把数据封装到list,然后在把数据插入(更新)到数据库,但是数据量过大的时候会报错,这个时候我们会把数据分割进行批量处理。处理代码:
// 分配处理 int batchDataSize = 50;// 分批限制条数 Integer size = entrustDetails.size();//entrustDetails是自己的集合 if (batchDataSize < size) { int batchNumber = size / batchDataSize;// 分批数 int remainder = size % batchDataSize;// 是否整除 if (remainder != 0) { batchNumber += 1; } logger.info("共有 : " + size + "条,!" + " 分为 :" + batchNumber + "批"); for (int i = 0; i < batchNumber; i++) { List<EntrustDetail> listEntrustDetailBean = null; if (remainder != 0 && i == batchNumber - 1) { listEntrustDetailBean = entrustDetails.subList(batchDataSize * i, size); } else { listEntrustDetailBean = entrustDetails.subList(batchDataSize * i, batchDataSize * i + batchDataSize); } //插入数据 boolean success = entrustDetailDao.batchSaveEntrustDetail(listEntrustDetailBean); if (!success) { logger.info("saveEntrustDetail方法插入失败"); throw new PreissueException(ResultEnum.ERROR); } } } else { boolean success = entrustDetailDao.batchSaveEntrustDetail(entrustDetails); if (!success) { logger.info("saveEntrustDetail方法插入失败"); throw new PreissueException(ResultEnum.ERROR); } } |