分页查询工具类-通用

发布于:2023-10-25 ⋅ 阅读:(87) ⋅ 点赞:(0)

手写分页查询的工具类,模仿百度分页

public class PageBean<T> {
 
    private int size = 5; //每页显示记录
    private int index = 1;//当前页号
    private int totalPageCount = 1;//总页数
    private int totalCount = 0;//记录总数
 
    private int[] numbers;//显示页数 集合
    private List<T> list;//要显示到页面的数据集合
 
    //得到开始记录
    public int getStartRow()
    {
        return (index -1) * size;
    }
 
    //得到结束记录
    public int getEndRow()
    {
        return index * size;
    }
 
    public int getSize()
    {
        return size;
    }
 
    public void setSize()
    {
        if (size > 0)
        {
            this.size = size;
        }
    }
 
    public int getIndex()
    {
        if (totalPageCount == 0)
        {
            return 0;
        }
        return index;
    }
 
    public void setIndex(int index)
    {
        if (index > 0 && index <= totalPageCount)
        {
            this.index = index;
        }else if (index > totalPageCount){
            this.index = totalPageCount;
        }
 
    }
 
    public int getTotalCount()
    {
        return totalCount;
    }
    public void setTotalCount(int totalCount)
    {
        if (totalCount >= 0)
        {
            this.totalCount = totalCount;
            setTotalPageContByRs();//根据总记录计算页数
        }
    }
 
    public int getTotalPageCount()
    {
        return this.totalPageCount;
    }
 
    private void setTotalPageContByRs()
    {
        if (this.size > 0 && this.totalCount > 0 && this.totalCount % this.size == 0){
            this.totalPageCount = this.totalCount / this.size;
        }else if (this.size > 0 && this.totalCount > 0 && this.totalCount % this.size > 0){
            this.totalPageCount = (this.totalCount / this.size) + 1;
        }else {
            this.totalPageCount = 0;
        }
        setNumners(totalPageCount);//获取显示页数集合
    }
 
    public int[] getNumbers()
    {
        return numbers;
    }
 
    public void setNumners(int totalPageCount)
    {
        if (totalPageCount >0){
            int[] numbers = new int[totalPageCount>10?10:totalPageCount];//页面显示的页数集合
            int k = 0;
 
            for (int i = 0; i < totalPageCount; i++) {
                if ((i>=index- (numbers.length/2+1) || i >= totalPageCount-numbers.length) && k < numbers.length){
                    numbers[k] = i +1;
                    k++;
                }else if (k >= numbers.length){
                    break;
                }
 
            }
            this.numbers = numbers;
 
 
        }
    }
    public void setNumbers(int[] numbers){
        this.numbers = numbers;
    }
    public List<T> getList()
    {
        return list;
    }
    public void setList(List<T> list)
    {
        this.list = list;
    }
}

业务层代码

public PageBean<Bao> QueryBaoLimit(int id, int index) {
        PageBean<Bao> pageBean = new PageBean<>();
        int max = dao.QueryMax(id);//先获取最大记录数
        pageBean.setTotalCount(max);//并先赋值 最大数
        pageBean.setIndex(index); //并赋值当前页数,就是首页第一页
        //pageBean.getStartRow()这个是计算出开始,起始点。.getSize()--,每页显示几条数据实体类默认5
        List<Bao> list = dao.QueryPage(id, pageBean.getStartRow(), pageBean.getSize());
        pageBean.setList(list);
 
        return pageBean;

 

注意:PageBean 需要定义用到的实体类

dao层一共需要定义两个方法(总记录数与limit分页查询)

service层一个方法:先调用dao层总记录数方法,拿到之后再调用dao层limit方法

思路:1.先使用sql 根据id获取 总记录数

2.定义sql 分页查询(id,index(起始点),getSize()(每页几条))

3.使用工具类,先把最大数与index当前页赋值,然后调用dao成分页查询方法,并将起始点与每页显示几条传给它

本文含有隐藏内容,请 开通VIP 后查看