public final class BatchOperator {
private BatchOperator() {
}
/**
* 批量操作
*
* @param pageSize
* @param list
* @param callback
* @param
* @return
* @throws ServiceException
*/
public static int operate(int pageSize, List list, Callback callback) throws ServiceException {
int total = list.size();
int pages = total <= pageSize ? 1 : total % pageSize == 0 ? total / pageSize : total / pageSize + 1;
try {
for (int i = 0; i < pages; i++) {
if ((i + 1) * pageSize <= total) {
callback.execute(list.subList(i * pageSize, (i + 1) * pageSize));
} else {
callback.execute(list.subList(i * pageSize, total));
}
}
return 1;
} catch (Exception e) {
throw new ServiceException(ExceptionCode.SYSTEM_ERROR, e);
}
}
public static interface Callback {
void execute(List list);
}
}
//使用方式
BatchOperator.operate(200, agentInfoList, (itemList) -> {
myAgentDao.updateCustomerNumAndEstateNum(itemList);
});