diff --git a/common-lib/src/main/java/cn/axzo/foundation/util/PageUtils.java b/common-lib/src/main/java/cn/axzo/foundation/util/PageUtils.java index 4e83038..45ce71b 100644 --- a/common-lib/src/main/java/cn/axzo/foundation/util/PageUtils.java +++ b/common-lib/src/main/java/cn/axzo/foundation/util/PageUtils.java @@ -1,6 +1,7 @@ package cn.axzo.foundation.util; import cn.axzo.foundation.page.IPageReq; +import cn.axzo.foundation.page.PageReqV2; import cn.axzo.foundation.page.PageResp; import com.google.common.collect.Lists; import org.apache.commons.lang3.BooleanUtils; @@ -10,6 +11,40 @@ import java.util.function.Function; public class PageUtils { + /** + *
+     * 快捷拉取所有分页数据,默认从第一页开始拉取,直到返回的记录行数小于 预期的行数
+     * 分页大小 为 pageReq.getPageSize(),可通过该参数调整。
+     * 
+ * XXX: 注意,判断数据查询的完成条件,是 当前也页的记录行数 小于 分页大小,所以对于会破坏查询条件的请求参数,该方法不保证会返回所有数据 + * + * + *
+     * 示例代码:
+     *    import cn.axzo.foundation.util.PageUtils;
+     *    // case 1. nodeUserService定义了以下方法:
+     *    PageResp list(ListOrgNodeUserReq req); // ListOrgNodeUserReq extends PageReqV2
+     *    // 获取所有分页数据
+     *    List nodeUsers = PageUtil.drainAll(req, nodeUserService::list);
+     *
+     *    // case 2. nodeUserApi定义了以下方法
+     *    ApiResult> list(ListOrgNodeUserReq req); // ListOrgNodeUserReq extends PageReqV2
+     *    List nodeUsers = PageUtil.drainAll(req, r -> nodeUserApi.list(r).getData());
+     * 
+ * + * @param pageReq + * @param function + * @param + * @param + * @return + */ + public static List drainAll(R pageReq, Function> function) { + return PageUtils.drainAll(pageNumber -> { + pageReq.setPage(pageNumber); + return function.apply(pageReq); + }); + } + /** * 将所有的数据通过page接口写入到list. 并返回 * function中需要参数为新的pageNum, 默认从第一页开始加载. 直到返回的记录行数小于 预期的行数