分页查询工具类-通用

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

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成分页查询方法,并将起始点与每页显示几条传给它

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一剑封喉の

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值