昨天实现了分页的jsp包含文件,今天完成Hibernate分页查询,并与分页文件结合,实现分页显示功能。
1. 实现包含的page文件,见上一篇文章
2. control DAO Service里面实现分页查询。
DAO 层面代码
public List<Role> getRolebyQuerybyPage(String query, int pageNo,
int pageSize) {
session=sessionFactory.getCurrentSession();
Query q=session.createQuery(query);
q.setFirstResult((pageNo-1)*pageSize);
q.setMaxResults(pageSize);
return q.list();
}Service层面代码
public List<Role> getRoles(int pageNo, int pageSize) {
return userDao.getRolebyQuerybyPage("from Role", pageNo, pageSize);
}Control 层面代码
@RequestMapping(value = "/admin_role")
public String AdminRoleManagement(Model model, @RequestParam(defaultValue="1",required=false) String pageno, HttpSession session) {
//每页显示数量
int pageSize=5;
int totalPage=2;
totalPage=(int) Math.ceil(1.0*(userService.getAllRoles().size())/pageSize);
int pageNo=Integer.parseInt(pageno);
Pager page=(Pager) session.getAttribute("page");
System.out.println(page);
if(page==null){
page=new Pager(pageNo,totalPage,"admin_role");
}else
{
page.setCurrentpage(pageNo);
}
session.setAttribute("page", page);
model.addAttribute("roles", userService.getRoles(pageNo, pageSize));
return "admin/admin_role";
}另外我建立了一个Page类,用来存储关于当前页,总页数,链接地址信息
public class Pager {
private int currentpage;
private int totalpage;
private String url;
public int getCurrentpage() {
return currentpage;
}
public void setCurrentpage(int currentpage) {
this.currentpage = currentpage;
}
public int getTotalpage() {
return totalpage;
}
public void setTotalpage(int totalpage) {
this.totalpage = totalpage;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public Pager(int currentpage, int totalpage, String url) {
super();
this.currentpage = currentpage;
this.totalpage = totalpage;
this.url = url;
}
}3. 修改显示页面,完成对接
<jsp:include page="/resources/include/pager.jsp">
<jsp:param value="${page.url}" name="url" />
<jsp:param value="${page.currentpage}" name="currentpage"/>
<jsp:param value="${page.totalpage}" name="totalpage"/>
</jsp:include>
至此,大功告成

本文介绍了如何使用Hibernate实现分页查询功能,包括DAO层、Service层及Control层的具体实现细节。此外,还涉及了Page类的设计,用于存储当前页、总页数等信息。
1093

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



