如何实现分页,大家能会在脑海里浮现用table,或者如果是wml文件的话写个循环建立多个card,但这都牵涉到一个问题,你把数据库中的数据都先查了一遍,这是多么可怕的事情,但如果说你一页显示10条数据,那么在数据库中只查10条岂不妙哉。所以我就是这么实现的,因为我的项目架构是SpringMVC+Spring+Hibernate,所以先执行对应的Controller,然后返回相应的视图。
看controller实现
//获得要显示第几页,因为第一次没有参数,所以给它赋个初值1,如果不是第一次,就可以从页面获得值了
String page=request.getParameter("pageNum");
int pageNum;
if(page==null){
pageNum=1;
}else{
pageNum=Integer.parseInt(page);
}
//将其塞给前台
request.setAttribute("pageNum", pageNum);
String hql = "FROM Company as t WHERE 1=1";
hql += " ORDER BY corpSid DESC";
//用GenericDaoImplHibernate中的getCount方法,去查看总条数,而不是全部查询之后统计
int count=companyDao.getCount(hql);
//用下面的逻辑得到总页数
int countPage;
if(count%10!=0){
countPage=count/10+1;
}else{
countPage=count/10;
}
request.setAttribute("countPage", countPage);
Query query = companyDao.createQuery(hql);
//确定查询的第一条数据的位置,和总共要查多少条
query.setFirstResult((pageNum-1)*10);
query.setMaxResults(10);
List<Company> dataset = (List<Company>)query.list();
前台页面,获得两个数据
<%
int countPage=Integer.parseInt(request.getAttribute("countPage").toString());
int pageNum=Integer.parseInt(request.getAttribute("pageNum").toString());
%>
然后处理显示
<p>
共<%=countPage%>页 当前页数:第<%=pageNum%>页
<%if((pageNum)>1){ %>
<a href="companyList.do?pageNum=<%=pageNum-1%>">上一页</a>
<%} %>
<%if(pageNum<countPage){ %>
<a href="companyList.do?pageNum=<%=pageNum+1%>">下一页</a><br/>
<% } %>
</p>
这样就OK了,觉得对你有帮助就顶一下吧。只是一下而已
SpringMVC分页实现
4075

被折叠的 条评论
为什么被折叠?



