MySql实现动态分页

来源:互联网 发布:iphone短信群发软件 编辑:程序博客网 时间:2024/06/06 12:53

MySql实现动态分页


当查询数据时,有可能显示很多条数据,加上一个分页效果会增强用体验。


首先在数据库中测试分页效果(以t_person表为例,共有101条记录):

SELECT * FROM t_person;  --查询t_person所有记录SELECT * FROM t_person limit start,pagesize;  --查询t_person中的记录,从start开始,查询pagesize条记录SELECT COUNT(*) FROM t_person;  --查询共有多少条记录,记为recordcount

规律如下:(注:pagenum当前页码,pagecount总页数

pagenum start pagesize pagecount 1 0 10 11 2 10 10 11 3 20 10 11

- Start = pagesize * pagenum – pagesize
- Pagecount = recordcount/pagesize //前提是整除,当不整除时,pagecount++)


实现页面按固定数量显示:

执行SQL语句显示10条
这里写图片描述
需要在Servlet中定义的参数有:pagesize,pagenum,recordcount,pagecount
将这些属性封装成PageBean
eg:
Pagesize=10;
Pagenum=1;
pagecount=recordcount/pagesize;(不能整除+1)
recordcount通过数据库查询得到

在jsp中加入这些条目

这里写图片描述
依次将page中的值传过来显示就好

考虑首页,上一页,下一页,尾页的逻辑关系:

当在第一页时,首页和上一页是不可用的。同理,当在最后一页时,下一页和尾页是不可用的。

每页显示<input type="text" value="${page.pagesize }" name="pagesize" size="2" onblur="forword1()" id="pagesize"/>条&nbsp; <c:choose>    <c:when test="${page.rightnow==1 }">        首页&nbsp;        上一页&nbsp;    </c:when>    <c:otherwise>        <a href="person.do?rightnow=1&pagesize=${page.pagesize }">首页</a>&nbsp;        <a href="person.do?rightnow=${page.rightnow - 1 }&pagesize=${page.pagesize }">上一页</a>&nbsp;        </c:otherwise></c:choose><c:choose>    <c:when test="${page.rightnow==page.pagecount }">                        下一页&nbsp;                        尾页&nbsp;    </c:when>    <c:otherwise>        <a href="person.do?rightnow=${page.rightnow + 1 }&pagesize=${page.pagesize }">下一页</a>&nbsp;        <a href="person.do?rightnow=${page.pagecount }&pagesize=${page.pagesize }">尾页</a>&nbsp;    </c:otherwise></c:choose> 当前第<input type="text" value="${page.rightnow }" name="rightnow" size="2" onblur="forword1()" id="changrightnow"/>页&nbsp;
0 0