一、findAllEmps(currentPage,pageSize)方法中分页查询的sql语句
String sql="select * from (select emp.*,rownum rn from emp where rownum<=currentPage*pageSize) where rn>=(currentPage-1)*pageSize+1";
然后返回查询结果rs以 List<Emp>给调用它的方法。
要查询第2页的内容,currentPage*pageSize=2*5=10 (currentPage-1)*pageSize+1=(2-1)*5+1=6
先到表中查询前10条记录,再查询第6条以后的记录,这样,记录很多时,效率比较高。
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
二、jsp页面中改变当前页码的值,查询表中的一部分记录。
<%
int pageSize=5;
int rowCount=empDao.getRowCount(); //查询表,计算总记录条数
int pageCount=(rowCount/pageSize==0)?(rowCount/pageSize):(rowCount/pageSize+1); //计算可以分为多少页显示
String currentPage_s=request.getParameter("currentPage");//reques获取当前页码
int currentPage=1; //初始化为第一页
if(currentPage_s!=null){
currentPage=Integer.valueOf(currentPage_s);
}
if(currentPage<1){
currentPage=1;
}
if(currentPage>pageCount){
currentPage=pageCount;
}
//改变当前页的值,调用查询数据的方法,返回数据集合
List<Emp> emplist=empDao.findAllEmps(currentPage,pageSize);
%>
页面中显示数据
<body>
<center>
<table cellspacing="0" cellpadding="3" border="1" borderColor="#8080ff" width="80%">
<tr align="center">
<td>工号</td>
<td>姓名</td>
<td>职位</td>
<td>上司</td>
<td >雇佣日期</td>
<td>工资</td>
<td>奖金</td>
<td>所属部门</td>
</tr>
<%for(int i=0;i<emplist.size();i++){
out.print("<tr align='center'>");
out.print("<td>"+emplist.get(i).getEmpno()+"</td>");
out.print("<td>"+emplist.get(i).getEname()+"</td>");
out.print("<td>"+emplist.get(i).getJob()+"</td>");
out.print("<td>"+emplist.get(i).getMgr()+"</td>");
out.print("<td>"+emplist.get(i).getHiredate()+"</td>");
out.print("<td>"+emplist.get(i).getSal()+"</td>");
out.print("<td>"+emplist.get(i).getComm()+"</td>");
out.print("<td>"+emplist.get(i).getDeptno()+"</td>");
out.println("</tr>");
}
out.println("</table>");
out.println("<br/>");
//判断首页链接是否要显示
if(currentPage>1){
out.println("<a href=viewempByPage.jsp?currentPage="+1+" target='_self' >首页</a>");
}
else{
out.println("首页");
}
//判断上一页链接是否要显示
if(currentPage>1){
out.println(" ");
out.println("<a href=viewempByPage.jsp?currentPage="+(currentPage-1)+" target='_self' >上一页</a>");
}
else{
out.println(" 上一页");
}
for(int i=1;i<=pageCount;i++){
if(i!=currentPage){
out.println(" ");
out.println("<a href=viewempByPage.jsp?currentPage="+i+" target='_self' >"+i+"</a>");
}else{
out.println(" "+i);
}
}
//判断下一页链接是否要显示
if(currentPage<pageCount){
out.println(" ");
out.println("<a href=viewempByPage.jsp?currentPage="+(currentPage+1)+" target='_self' >下一页</a>");
}
else{
out.println(" 下一页");
}
//判断末链接是否要显示
if(currentPage<pageCount){
out.println(" ");
out.println("<a href=viewempByPage.jsp?currentPage="+pageCount+" target='_self' >末页</a>");
}
else{
out.println(" 末页");
}
%>
</center>
</body>