基于Spring的web分页
Spring提供了两个分页的类,分别是pager和pageable,下面使用这两个类完成web数据的分页及显示.
假设表test中只有a、b两个属性:
前台页面:
<tr><th>a<th>b</th></tr> <c:forEach items="${pageTest.content}" var="user"> <tr> <td>${user.a}</td> <td>${user.b}</td> </tr> </c:forEach> 共${pageTest.totalPages}页,每页${pageTest.size}条 <c:forEach end="${pageTest.totalPages}" var="te" step="1" begin="1" varStatus="name"> <a href="${ctx}/account/test/testPageList?pageNo=${te}">${te}</a> </c:forEach>
pageTest是从后台通过model传到前台的数据,其中content是指数据的内容。totalPages是总页数,size是每页的数据条数。
后台:
控制层controller
public String testPageList(@PathParam("pageNo", required = false) String pageNo,Model model) { Integer currentPage=0; if(pageNo!=null){ currentPage=Integer.valueOf(pageNo); currentPage=currentPage-1; } PageRequest pagerequset = new PageRequest(currentPage, 2,new Sort( new Sort.Order(Sort.Direction.DESC,"id"))); Page<Test> pageTest=testService.findAll(pagerequset); //pageTest.get model.addAttribute("pageTest", pageTest); return "account/testList"; }
service层:
public Page<Test> findAll(Pageable pageable){ return testDao.findAll(pageable); }
使用hibernate的分页方法:
// startRecord是查询的起始位置 // pageSize 获取记录的最大条数 public List <Test> getPage(int startRecord,int pageSize) { final Query listQuery = em.createQuery(QUERY_USER_BY_ALL); listQuery.setFirstResult(startRecord); listQuery.setMaxResults(pageSize); return listQuery.getResultList(); }
其中:QUERY_USER_BY_ALL是HQL查询语句
posted on 2012-08-24 21:03 zhuyanyan 阅读(1135) 评论(0) 编辑 收藏 举报