论坛首页 Java企业应用论坛

spring+hibernate分页标签,修改jpager

浏览 4781 次
精华帖 (1) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-11-17   最后修改:2010-09-23
以前写的,添加进来!

jpager是通过把所有查询数据都存放在session中进行分页,当数据量大切换时就比较缓慢,修改之后,通过hibernate在数据库底层进行分页
但修改后有些不足,标签主要用来管理导航栏,在java代码中得进行一些设置!
在XXXXDAO中得定义下面的方法
//sql是查询语句
//pagesize是每页记录数
//pageno是当前页面数
public List pageList(String sql,int pagesize,int pageno){
  Session session = this.getSession();
  Query query = session.createQuery(sql);
  query.setFirstResult((pageno - 1) * pagesize);
  query.setMaxResults(pagesize);
  List list=query.list();
  return list;
}

在相对应的控制器中XXXXController(extends MultiActionController)
要设置private int pagesize;//通过set/get注入数值
public ModelAndView displayXXX(HttpServletRequest req,HttpServletResponse res){
  .......
  List list = this.getCompanyDAO().getAll();
  int size =list.size();
  if(size>0){
  String pagen =(String) req.getParameter("pageNo");
  String s = String.valueOf(size);
  int pageno;
  if (pagen==null){
   pageno =1;
  }else{
   pageno = Integer.parseInt(pagen);
  }
  List XXXXs =this.getXXXXDAO().pageList("from XXXX", pagesize, pageno);
  req.setAttribute("total",s);
  req.setAttribute("pageNo", String.valueOf(pageno));
  req.setAttribute("pageSize", String.valueOf(pagesize));
  return new ModelAndView(this.getXXXXPage(),"XXXXs",XXXXs);
 
在页面中 
.....
<%@taglib prefix="page" uri="http://jpagerxp.com/taglibs/page" %>
.......
<c:forEach var="result" items ="${XXXXs}" varStatus="status">
<tr>
<td><input type="checkbox" name="id" value="${result.id}" /></td>
<td>${result.name}</td>
</tr>
</c:forEach> 
<tr class="ttd">
<td colspan="2" align="center">
<page:bt/>//调用标签
</td>
</tr>
请大家提些意见!
   发表时间:2008-11-18  
这个分页支持条件查询么?
0 请登录后投票
   发表时间:2008-11-18  
public List pageList(String sql,int pagesize,int pageno){
  Session session = this.getSession();
  Query query = session.createQuery(sql);
  query.setFirstResult((pageno - 1) * pagesize);
  query.setMaxResults(pagesize);
  List list=query.list();
  return list;
}

----------- 这个就有点问题了--------- 不是适合所有情况的。
0 请登录后投票
   发表时间:2008-11-18  
ray_linn
  
  请问是什么问题,可以详细说明一吗?谢谢
0 请登录后投票
   发表时间:2008-11-18  
godson_2003 写道

这个分页支持条件查询么?


当然支持了!

public List pageList(String sql,int pagesize,int pageno){
......
}
sql可以是带条件的sql语句!
0 请登录后投票
   发表时间:2008-11-18  
请问是什么问题,可以详细说明一吗?谢谢
ray_linn 写道

public List pageList(String sql,int pagesize,int pageno){ &nbsp; Session session = this.getSession(); &nbsp; Query query = session.createQuery(sql); &nbsp; query.setFirstResult((pageno - 1) * pagesize); &nbsp; query.setMaxResults(pagesize); &nbsp; List list=query.list(); &nbsp; return list; } ----------- 这个就有点问题了--------- 不是适合所有情况的。



请问是什么问题,可以详细说明一吗?谢谢
0 请登录后投票
   发表时间:2008-11-18  
用了hibernate,sql就尽量少用。
多用criteria,方便简洁。
0 请登录后投票
   发表时间:2008-11-18  
http://www.iteye.com/topic/18127 -- 这个就是问题之一。


在另外一些数据库上比如MSSQL,SYBASE下,大数据量下也容易出现内存占用以至tomcat崩溃的问题。


如果大数据量,最好还是忘记hibernate吧。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics