JavaEE分页实现

本文介绍了JavaEE中分页查询的概念、物理分页和逻辑分页的优缺点,重点讨论了物理分页的实现,包括使用JDBC的滚动结果集和数据库特定的分页函数,并给出了MySQL的`LIMIT`用法示例。此外,还详细阐述了分页的逻辑,包括页码、每页条数、总条数的计算,并提供了分页代码实现的思路,涉及分页Bean的设计以及页面链接的控制。
摘要由CSDN通过智能技术生成

分页查询

         问题:什么是分页,为什么使用分页?

                   分页就是将数据以多页去展示,使用分页可以提高客户的感受。

                  

         分页分类:

                   1.物理分页

                            只从数据库中查询出当前页的数据。

                            优点:不占用很多内存

                            缺点:效率比较低

                   2.逻辑分页

                            从数据库中将所有记录查询出业,存储到内存中,要想展示当前页

                            数据,直接从内存中获取。

                            优点:效率高

                            缺点:占用内存比较高

                           

                   在java开发领域,我们使用的比较多的是物理分页。

                            物理分页:

                               1.直接使用jdbc完成

                                               使用滚动结果集.  优点:跨数据库。缺点:性能低。

                                     2.使用数据库本身提供的分页操作.

                                               会使用每一个数据库特定的分页函数,优点:性能高  缺点:不能跨数据库。

                                              

                                               mysql:limit

                                               sqlservlet:top

                                               oracle:rownum

                                              

                   介绍limit使用.

                            select* from 表 limit m,n;

                            m:代表的是从第几条开始  注意:它是从0开始记录.

                            n:代表查询几条记录.

                           

                            示例:分页音,每页显示6条,要查询第2页的数据.

                                    

                                     select* from 表  limit  (页码-1)*每页条数,每页条数;

                                    

         ------------------------------------------------------------------------------

分页分析:

                   1.页码  默认第一页 

                   2.每页条数   人为定义

                   3.总条数   select count(*) from 表

                   4.总页数    总页数=总条数%每页条数==0?总条数/每页条数:总条数/每页条数+1

                                               总页数=Math.ceil(总条数*1.0/每页条数);

                                              

                   5.当前页的数据  List<?>----->select * from 表  limit (页码-1)*每页条数,每页条数;


分页代码实现:

                   1.在success.jsp页面上

                  <ahref="${pageContext.request.contextPath}/findAllByPage">查看所有客户信息(分页展示)</a><br>

                   2.创建CustomerFindAllByPageServlet完成分页                     

            问题:要向页面携带的数据有很多,不仅是要展示的数据,例如:页码,总页数等,都需要携带到页面上,怎样处理?

             解决方案:可以创建一个分页Bean,在这个Bean中封装所有关于分页相关的数据.

                                              

                   3.在showCustomerByPage.jsp页面上添加

               <ahref="/day20_1/findAllByPage?pageNum=1">首页</a>&nbsp;&nbsp;&nbsp;

                                                       

              <ahref="/day20_1/findAllByPage?pageNum=${pb.pageNum-1}">上一页</a>&nbsp;&nbsp;&nbsp;

                                    

       <ahref="/day20_1/findAllByPage?pageNum=${pb.pageNum+1 }">下一页</a>&nbsp;&nbsp;&nbsp;

                                    

                    <ahref="/day20_1/findAllByPage?pageNum=${pb.totalPage }">尾页</a>&nbsp;&nbsp;&nbsp;

                                    

                            在CustomerFindAllByPageServlet中处理请求参数pageNum

                                     intpageNum = 1;

                                     String_pageNum = request.getParameter("pageNum");

                                     if(_pageNum != null) {

                                               pageNum= Integer.parseInt(_pageNum);

                                     }

                           

                            问题:怎样控制上一页,下一页。

                                     条件判断就可以解决.

                                     <c:iftest="${pb.pageNum==1}">

                                               上一页&nbsp;&nbsp;&nbsp;

                                     </c:if>

                                     <c:iftest="${pb.pageNum!=1}">

             <ahref="/day20_1/findAllByPage?pageNum=${pb.pageNum-1}">上一页</a>&nbsp;&nbsp;&nbsp;

                                     </c:if>

                                    

                                     <c:iftest="${pb.pageNum==pb.totalPage}">

                                               下一页&nbsp;&nbsp;&nbsp;

                                     </c:if>

                                     <c:iftest="${pb.pageNum!=pb.totalPage}">

                 <ahref="/day20_1/findAllByPage?pageNum=${pb.pageNum+1 }">下一页</a>&nbsp;&nbsp;&nbsp;

                                     </c:if>


         

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值