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 算力,解读结果公开显示在下面。
还没有人解读过这个文件。
