whyclxw
2 天以前 3e2f537e80f51948969de2a5b1b82292c0aac550
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
53
54
55
package com.whyc.util;
 
import com.github.pagehelper.PageInfo;
 
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
 
public class PageInfoUtils {
 
    public static <T> PageInfo<T> list2PageInfo(List<T> arrayList, Integer pageNum, Integer pageSize) {
        if(arrayList==null){
            PageInfo<T> pageInfo = new PageInfo<T>(new ArrayList<>());
            return pageInfo;
        }else{
            //实现list分页
            //PageHelper.startPage(pageNum, pageSize);
            int pageStart = pageNum == 1 ? 0 : (pageNum - 1) * pageSize;
            int pageEnd = arrayList.size() < pageSize * pageNum ? arrayList.size() : pageSize * pageNum;
            List<T> pageResult = new LinkedList<T>();
            if (arrayList.size() > pageStart) {
                pageResult = arrayList.subList(pageStart, pageEnd);
            }
            PageInfo<T> pageInfo = new PageInfo<T>(pageResult);
            //获取PageInfo其他参数
            pageInfo.setTotal(arrayList.size());
            int endRow = pageInfo.getEndRow() == 0 ? 0 : (pageNum - 1) * pageSize + pageInfo.getEndRow() + 1;
            pageInfo.setEndRow(endRow);
            boolean hasNextPage = arrayList.size() <= pageSize * pageNum ? false : true;
            pageInfo.setHasNextPage(hasNextPage);
            boolean hasPreviousPage = pageNum == 1 ? false : true;
            pageInfo.setHasPreviousPage(hasPreviousPage);
            pageInfo.setIsFirstPage(!hasPreviousPage);
            boolean isLastPage = (arrayList.size() > pageSize * (pageNum - 1) && arrayList.size() <= pageSize * pageNum) ? true : false;
            pageInfo.setIsLastPage(isLastPage);
            int pages = arrayList.size() % pageSize == 0 ? arrayList.size() / pageSize : (arrayList.size() / pageSize) + 1;
            pageInfo.setNavigateLastPage(pages);
            int[] navigatePageNums = new int[pages];
            for (int i = 1; i < pages; i++) {
                navigatePageNums[i - 1] = i;
            }
            pageInfo.setNavigatepageNums(navigatePageNums);
            int nextPage = pageNum < pages ? pageNum + 1 : 0;
            pageInfo.setNextPage(nextPage);
            pageInfo.setPageNum(pageNum);
            pageInfo.setPageSize(pageSize);
            pageInfo.setPages(pages);
            pageInfo.setPrePage(pageNum - 1);
            pageInfo.setSize(pageInfo.getList().size());
            int starRow = arrayList.size() < pageSize * pageNum ? 1 + pageSize * (pageNum - 1) : 0;
            pageInfo.setStartRow(starRow);
            return pageInfo;
        }
    }
}