分页实现

本文介绍了在数据量较大时采用分页显示的重要性,并详细阐述了分页的实现思路,包括利用数据库的 `limit` 语句进行数据分页,以及在前端如何通过计算偏移量展示不同页面。同时,提供了后端处理分页查询、选择页数及计算总页数的代码示例,以及前端展示分页和处理页数切换的方法。
摘要由CSDN通过智能技术生成

目的

当数据很多时,采用分页的方式可以将数据,分页显示。既提高了运行速度,也便于查看。

实现思路

  • 分页显示

采用数据库语句 “limit 偏移量 分页量” 方法,将数据分页。

  • 选择页数

选择页数时,使用 “(页数-1)*分页量” 作为偏移量可以实现点击某页查看对应的数据

后端代码实现

  • 分页显示操作数据库代码
@Override
    public List<Student> selectPage(int offset, int pageSize) {
        String sql = "select * from students limit ?,?";
        BeanListHandler<Student> handler = new BeanListHandler(Student.class);
        Integer[] args = {offset,pageSize};
        return DBUtil.select(sql,handler,args);
    }
  • 选择页数代码实现
int currentPage = req.getParameter("p") == null ? 1 : Integer.parseInt(req.getParameter("p"));//当前页码值
int pageSize = 10;//分页量
List<Student> list =  ssi.queryPage(currentPage,pageSize);//分页后的数据
@Override
    public List<Student> queryPage(int currentPage,int pageSize) {

        //偏移量: 起始位置,从0开始
        int offset = (currentPage-1)*pageSize;
        return sdi.selectPage(offset,pageSize);
    }
  • 显示总页数代码实现(使用sql语句查询到数据库数据的总数,除以分页数并向上取,则为总页数)
int total = ssi.queryTotal();//总条数
int pages = (int) Math.ceil(total*1.0 / pageSize);//总页数

前端代码实现

  • 分页显示(使用forEach遍历将数据输出显示)
  • 选择显示(判断点击页数是否和偏移量相等,相等则跳到相应的分页面)
<c:forEach begin="1" end="${pages}" var="i">
    <li class="${i== currentPage ? 'active': ''}"><a href="?a=look&p=${i}" >${i}</a></li>
</c:forEach>
  • 前一页后一页的点击实现(将页数+/-1可实现)
  • 注意:+在EL中实现的时+运算,无法进行拼接字符串操作
<li>
      <a href="?a=look&p=${currentPage+1 > pages ? pages : currentPage+1}" aria-label="Next">
          <span aria-hidden="true">&raquo;</span>
      </a>
</li>

实现效果图

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值