hibernated的DAO类的分页方法; public PagerMonl findAll(int offset, int pageSize) {
Session session = this.getSession();
String hql = "select count(*) from TblUser";
Query q = session.createQuery(hql);
int total = ((Long) q.uniqueResult()).intValue();
q= this.getSession().createQuery("from TblUser");
q.setFetchSize(offset);
q.setMaxResults(pageSize);
List datas=q.list();
PagerMonl pm = new PagerMonl();
pm.setTotal(total);
pm.setDatas(datas);
return pm;
}pager类;package com.itt.pager;import java.util.List;public class PagerMonl { private int total;
private List datas; public PagerMonl(int total, List datas) {
super();
this.total = total;
this.datas = datas;
} public PagerMonl() {
super();
// TODO Auto-generated constructor stub
} public int getTotal() {
return total;
} public void setTotal(int total) {
this.total = total;
} public List getDatas() {
return datas;
} public void setDatas(List datas) {
this.datas = datas;
}
}
action类;'package com.itt.action;import javax.servlet.http.HttpServletRequest;import org.apache.struts2.ServletActionContext;import com.itt.bean.TblUser;
import com.itt.biz.IBaseDao;
import com.itt.pager.PagerMonl;
import com.opensymphony.xwork2.ActionSupport;public class UserAction extends ActionSupport { private TblUser user;
private IBaseDao<TblUser> baseDao; public String add() throws Exception {
// TODO Auto-generated method stub
this.baseDao.save(user);
return "save";
} public String get() {
HttpServletRequest request = ServletActionContext.getRequest();
String n = null;
try {
n = request.getParameter("pager.offset");
} catch (Exception e) {
// TODO: handle exception
} int offset = 0;
if (!"".equals(n) && n != null) {
offset = Integer.parseInt(n.toString());
}
PagerMonl pm = this.baseDao.findAll(offset, 10);
request.setAttribute("pm", pm);
return "result";
} public TblUser getUser() {
return user;
} public void setUser(TblUser user) {
this.user = user;
} public IBaseDao<TblUser> getBaseDao() {
return baseDao;
} public void setBaseDao(IBaseDao<TblUser> baseDao) {
this.baseDao = baseDao;
}
}
页面; <body>
     <table width="778" border="0" cellPadding="0" cellSpacing="1" bgcolor="#6386d6">
     <tr bgcolor="#EFF3F7">
     <td align="center">
     编号
     </td>
     <td align="center">
     名字
     </td>
     <td align="center">
     密码
     </td>
     </tr>
     <c:if test="${!empty pm.datas}">
     <c:forEach items="${pm.datas}" var="item">
     <tr bgcolor="#EFF3F7">
     <td align="center">
     ${item.id }
     </td>
     <td align="center">
     ${item.userName }
     </td>
     <td align="center">
     ${item.passWord }
     </td>
     </tr>
     </c:forEach>
     </c:if>
     <c:if test="${empty pm.datas}">
     <tr>
     <td>没有找到数据</td>
     </tr>
     </c:if>
     </table>
      <pg:pager url="user_get.action" items="${pm.total}" export="currentPageNumber=pageNumber">   
    <pg:first>   
        <a href="${pageUrl}">首页</a>   
    </pg:first>   
    <pg:prev>   
        <a href="${pageUrl }">上一页</a>   
    </pg:prev>   
    <pg:pages>   
        <c:choose>   
            <c:when test="${currentPageNumber eq pageNumber}">   
                <font color="red">${pageNumber }</font>   
            </c:when>   
            <c:otherwise>   
                <a href="${pageUrl }">${pageNumber }</a>   
            </c:otherwise>   
        </c:choose>   
    </pg:pages>   
    <pg:next>   
        <a href="${pageUrl }">下一页</a>   
    </pg:next>   
    <pg:last>   
        <a href="${pageUrl }">尾页</a>   
    </pg:last>   
</pg:pager>   
  </body>

解决方案 »

  1.   

    业务类接口package com.itt.biz;import java.util.List;import org.hibernate.Query;
    import org.hibernate.Session;import com.itt.bean.TblUser;
    import com.itt.pager.PagerMonl;public interface IBaseDao<T> { public PagerMonl findAll(int offset, int pageSize); public void save(T transientInstance); public void delete(T persistentInstance); public T findById(java.lang.Integer id); public List findByExample(T instance); public List findByProperty(String propertyName, Object value); public List findAll(); public T merge(T detachedInstance);
    }实现类package com.itt.biz.impl;import java.util.List;
    import com.itt.biz.IBaseDao;
    import com.itt.pager.PagerMonl;
    import com.itt.bean.TblUser;
    import com.itt.dao.TblUserDAO;public class TblUserDaoBizImpl implements IBaseDao<TblUser> { private TblUserDAO tblUserDAO; public TblUserDAO getTblUserDAO() {
    return tblUserDAO;
    } public void setTblUserDAO(TblUserDAO tblUserDAO) {
    this.tblUserDAO = tblUserDAO;
    } public void delete(TblUser persistentInstance) {
    // TODO Auto-generated method stub
    this.tblUserDAO.delete(persistentInstance);
    } public PagerMonl findAll(int offset, int pageSize) {
    // TODO Auto-generated method stub
    return this.tblUserDAO.findAll(offset, pageSize);
    } public List findAll() {
    // TODO Auto-generated method stub
    return this.tblUserDAO.findAll();
    } public List findByExample(TblUser instance) {
    // TODO Auto-generated method stub
    return this.tblUserDAO.findByExample(instance);
    } public TblUser findById(Integer id) {
    // TODO Auto-generated method stub
    return this.tblUserDAO.findById(id);
    } public List findByProperty(String propertyName, Object value) {
    // TODO Auto-generated method stub
    return this.findByProperty(propertyName, value);
    } public TblUser merge(TblUser detachedInstance) {
    // TODO Auto-generated method stub
    return this.tblUserDAO.merge(detachedInstance);
    } public void save(TblUser transientInstance) {
    // TODO Auto-generated method stub
    this.tblUserDAO.save(transientInstance);
    }}
      

  2.   

    那你跟踪一下,当你点下一页的时候,带到action中的PagerMonl pm = this.baseDao.findAll(offset, 10); 
    中的offset是多少啊?
      

  3.   

    debug调试吧 这么多代码看起来很费劲 啊 看看你传的页号之类的关键参数是否正确~~