在模型中实现分页显示,主要是在把查询的结果集转换成对象集合的时候进行控制,直把要显示的记录封装到集合中,不需要显示的记录不封装。
分两部分:第一部分,计算要显示哪些记录,也就是从什么地方开始显示,显示到什么地方结束;第二部分,是控制结果集的遍历,满足条件的记录添加到查询结果中。
计算要显示哪些记录
下面的代码完成了这样的功能,其中每页显示10条记录。pageNo是参数,表示要显示的页码。begin表示要显示的第一条记录,end表示要显示的最后一条记录。
// 要显示的页码,默认值为1
int iPageNo=1;
try
{
// 把字符串转换成整数
iPageNo = Integer.parseInt(pageNo);
}catch(Exception e){}
// 要显示的第一条记录
int begin = (iPageNo-1)*10+1;
// 要显示的最后一条记录
int end = iPageNo*10;
// 循环计数器
int index = 0;
控制结果集的遍历
如果当前记录小于要显示的第一条记录(begin)则不添加到集合中,不需要处理数据,结束本次循环。
如果当前记录大于要显示的最后一条记录(end),则后面的记录都不用处理,结束循环。下面的代码是对原有的while循环的修改。
// 对结果集进行遍历
while(rs.next())
{
// 循环到第index条
index++;
// 如果还没有到要显示的第一条记录,则不处理,继续遍历
if(index < begin)
continue;
// 如果已经大于最后一条记录,则结束循环
if(index > end)
break;