mitao
2024-06-06 3d2b51ea4520533de5e78f88dddf5b5c7dce4247
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
package com.sinata.core.support;
 
/**
 * 分页工具类
 *
 * @author xiaoleilu
 */
public class PageKit {
 
    /**
     * 将页数和每页条目数转换为开始位置和结束位置<br>
     * 此方法用于不包括结束位置的分页方法<br>
     * 例如:<br>
     * 页码:1,每页10 -> [0, 10]<br>
     * 页码:2,每页10 -> [10, 20]<br>
     * 。。。<br>
     *
     * @param pageNo       页码(从1计数)
     * @param countPerPage 每页条目数
     * @return 第一个数为开始位置,第二个数为结束位置
     */
    public static int[] transToStartEnd(int pageNo, int countPerPage) {
        if (pageNo < 1) {
            pageNo = 1;
        }
 
        if (countPerPage < 1) {
            countPerPage = 0;
//            LogKit.warn("Count per page  [" + countPerPage + "] is not valid!");
        }
 
        int start = (pageNo - 1) * countPerPage;
        int end = start + countPerPage;
 
        return new int[]{start, end};
    }
 
    /**
     * 根据总数计算总页数
     *
     * @param totalCount 总数
     * @param numPerPage 每页数
     * @return 总页数
     */
    public static int totalPage(int totalCount, int numPerPage) {
        if (numPerPage == 0) {
            return 0;
        }
        return totalCount % numPerPage == 0 ? (totalCount / numPerPage)
                : (totalCount / numPerPage + 1);
    }
}