一、Pagination类
是一个javabean类封装了对数据库的操作。如
// 查询全部记录的个数
public int getCount()
// 查询全部记录
public List<Person> getAll()
1、主要属性:
a 总记录数:count
b 当前页数:currentPage
c 每页要显示的记录数:lineSize
2、几的个必要的算法:
A、查询全部
在mysql里的分页函数是:limit index,lineSize
index à 表示从第index个开始,第一条记录是0。
lineSize à 要显示的记录个数。
如:
--从表中第1条记录显示到第10条记录
SELECT uid,name,password FROM person limit 0,10;
--从表中第10条记录显示到第20条记录(如果有20条记录),如果没有则显示剩余记录)
SELECT uid,name,password FROM person limit 10,10;
但是,Pagination类里并没有定义和index有关的属性,
不过我们知道了当前页和每页要显示的记录数,能否知道index呢?
其算法,正如你在Pagination类的
public List<Person> getAll() throws SQLException, ClassNotFoundException
方法里看到的(currentPage - 1) * lineSize 有兴趣的可以自己验证。
B、查询全部记录的个数
public int getCount()
这个方法是必须有的,而且与查询方法是一对一的关系。有一个查询就要有一个此查询结果的全部个数。
例如,如果在加一个根据关键字模糊查询 public queryByLike(String kw)
与之对应的记录的个数 public getCount(String kw)
其方法体不再给出,只是sql语句不同。
二、分页组件:pagination.jsp
为了提高通用性,我们必须定义一个url属性,作为提交地址,然后将currentPage(当前页)穿过去。
如:
<a href="<%=url%>?currentPage=1">『首页』</a>
当然,此URL由包涵它的页面提供。本程序中是show.jsp
其他属性,根据你的组件需要
**总页数的算法:(全部记录数+每页记录数)/ 每页记录数
本程序为:在show.jsp里
// 总页数
int pageSize = (pagination.getCount()+pagination.getLineSize())/pagination.getLineSize();
有兴趣的可以自己验证。