数据分页显示

如何实现分页,大家能会在脑海里浮现用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%>页&nbsp;&nbsp;当前页数:第<%=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了,觉得对你有帮助就顶一下吧。只是一下而已

 

 

你可能感兴趣的:(spring,Hibernate)