数据库批量操作工具类
在已知关联表ID集合,需要批量查询的业务场景,需要分批次in查询操作;
或在已知增加、删除、更新对象集合,需要批量操作的业务场景,需要分批次执行操作;
1、批量查询,返回List;
批量查询工具类:
/**
* 批量查询返回集合
*
* @param batchQueryExecutor 查询方法
* @param list 查询入参
* @param <P> 查询入参类型泛型
* @param <R> 查询返回值类型泛型
* @return
*/
public static <P, R> List<R> executeBatchQuery(BatchQueryExecutor<P, R> batchQueryExecutor, List<P> list) {
return executeBatchQuery(batchQueryExecutor, list, DEFAULT_LIMIT_FOR_EVERY_TIME);
}
/**
* 批量查询返回集合
*
* @param batchQueryExecutor 查询方法
* @param list 查询入参
* @param limit 每个批次要查询的数量上限,没有这个参数的方法默认每次上限为500
* @param <P> 查询入参类型泛型
* @param <R> 查询返回值类型泛型
* @return
*/
public static <P, R> List<R> executeBatchQuery(BatchQueryExecutor<P, R> batchQueryExecutor, List<P> list, Integer limit) {
if (CollectionUtils.isEmpty(list)) {
return new ArrayList<>();
}
int size = list.size();
if (size < limit) {
return batchQueryExecutor.executeQuery(list);
}
List<R> resultList = new ArrayList<>();
int start;
int end = 0;
while (end < size) {
start = end;
end = start + limit;
if (end > size) {
end = size;
}
List<R> queryResultList = batchQueryExecutor.executeQuery(list.subList(