src/main/java/com/hwua/erhai/common/PageNavUtil.java

(开头部分) 4KB

这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。

package com.hwua.erhai.common;


import com.hwua.erhai.model.MPage;
import com.hwua.erhai.model.MPageNav;

import java.util.ArrayList;
import java.util.List;

public class PageNavUtil {
    public static final int DEFAULT_PAGE_SIZE = 10;
    public static final int DEFAULT_PAGES = 10;
    public static final String DEFAULT_PAGE_REQUEST_FORMAT = "%s?page=%d&pageSize=%d";
    public static final String DEFAULT_PAGE_REQUEST_FORMAT_WITH_PARAM = "%s&page=%d&pageSize=%d";

    /**
     * 根据需要查询的页码currentPageIndexStr、每页的记录数pageSizeStr以及总记录数records,
     * 生成分页导航中各个页面的超链接
     *
     * @param baseUrl             请求的地址,可以包含参数,比如"user_show_car?type=price&order=asc";
     *                            也可以不包含参数,比如"user_show_car";
     *                            但必须注意的时,baseUrl不能包含空格!!!
     * @param currentPageIndexStr 当前请求的页号,从1开始计数。比如,前端通过"user_show_car?page=5"请求5号页面的数据,
     *                            那么此时的currentPageIndexStr就是5。
     * @param pageSizeStr         每页的记录数,如果传入null的话,那么每页的记录数就是默认值DEFAULT_PAGE_SIZE,也就是每页10条记录。
     * @param records             总的记录数。比如通过“select count(*) from table001 [where condition];”查询所得的总记录行数。
     * @return MPageNav           导航对象,包含了计算出来的分页导航的各种相关信息。
     */
    public static MPageNav genMPageNav(final String baseUrl,
                                       final String currentPageIndexStr,
                                       final String pageSizeStr,
                                       final int records) {
        if (baseUrl == null) {
            throw new IllegalArgumentException("baseUrl is null");
        }
        int currentPageIndex = currentPageIndexStr == null ? 1 : Integer.parseInt(currentPageIndexStr);
        currentPageIndex = currentPageIndex <= 0 ? 1 : currentPageIndex;
        int pageSize = pageSizeStr == null ? DEFAULT_PAGE_SIZE : Integer.parseInt(pageSizeStr);
        pageSize = pageSize <= 0 ? DEFAULT_PAGE_SIZE : pageSize;
        int startOffset = (currentPageIndex - 1) * pageSize;

        int maxPages = (int) Math.ceil(records / (float) pageSize);
        maxPages = maxPages <= 0 ? 1 : maxPages;
        List<MPage> pages = new ArrayList<>();
        int pageStart = (currentPageIndex - 1) / DEFAULT_PAGES * DEFAULT_PAGES + 1;
        if (pageStart > maxPages) {
            pageStart = maxPages;
        }
        int pageEnd = pageStart + DEFAULT_PAGES;  // [pageStart, pageEnd)
        if (pageEnd > maxPages + 1) {
            pageEnd = maxPages + 1;
        }

        String formatBaseURL = baseUrl.contains("?") ?
                DEFAULT_PAGE_REQUEST_FORMAT_WITH_PARAM : DEFAULT_PAGE_REQUEST_FORMAT;

        // [pageStart, pageEnd),前闭后开
        for (int i = pageStart; i < pageEnd; i++) {
            pages.add(new MPage(String.valueOf(i), String.format(formatBaseURL, baseUrl, i, pageSize)));
        }
后面还有 30 行代码,购买后查看完整代码

24 小时内免费解锁 3 个项目,之后 1 算力/个。 规则说明

AI 解读 AI

登录后可用,每次 10 算力,解读结果公开显示在下面。

还没有人解读过这个文件。