日期:2014-05-17  浏览次数:20701 次

上下分页怎么实现
大家伙谁能给我具体的说说ssh的分页技术是怎么实现的,看得我好迷茫啊。
本来就对分页不是怎么懂。
------解决方案--------------------
ssh是三个框架,你想问的是哪个分页?
------解决方案--------------------
看看Hibernate的数据方言类的源代码
------解决方案--------------------
三个结合当然用Hibernate带的分页啦!
------解决方案--------------------
Session s=hibernateTemplate.getSessionFactory().getCurrentSession();
s.beginTransaction();
Query query=s.createQuery(hql);
query.setFirstResult(pagesize); //分页查询
query.setMaxResults(pagelength);
List<Install> installs=query.list();
s.getTransaction().commit();
MySession.getSession().put("pagenum",installs.size());

我这么做的  pagesize每页的第一条  pagelength为每页显示条数   页面中通过当前显示条数+1是否大于 pagelength来判断是否还有下一页,判断是否有上一页就判断下pagesize是否为0
------解决方案--------------------
继承HibernateDaoSupport类,
如:
public List<Object> findObjectList(final int page,final int pageSize){
List<Object> list=this.getHibernateTemplate().execute(new HibernateCallback(){
   public Object doInHibernate(Session session)
throws HibernateExceptionSQLException {
Criteria criteria=session.createCriteria(Object.class);
Criterion criterion=Restrictions.eq("role.roleId",id);
criteria.add(criterion);
criteria.setFirstResult((page-1)*pageSize);//设置每页显示的第一条记录
criteria.setMaxResults(pageSize);//设置每页显示的最大记录数
List list=criteria.list();
session.close();
return list;

});

}

         /**
 * 查询最大记录数
 * 
 */
public int pageCount(){
String hql = "select count(*) from XXX";
List list = this.getHibernateTemplate().find(hql);
Number count = 0;
if (list != null && list.size() != 0) {
count = (Number) list.get(0);
}
return count.intValue();
}


        /**
 * 求出最大页面maxPage
 */
public int maxPage(Integer pageSize, Integer pageCount){
int maxPage = 0;
if (pageCount % pageSize == 0) {
maxPage = pageCount / pageSize;
} else {
maxPage = pageCount / pageSize + 1;
}
return maxPage;
}
------解决方案--------------------
1:首先你先写一个PageUtil.java的分页组件
2:然后写一个page_list.jsp的分页页面组件
3:在baseDao中写一个得到总个数和分页查询的函数
4:在你要分页的模块dao中实现baseDao的方法
5:在service层实现模块dao的分页方法,你就可以在自己的action中实现分页了

具体实现如下:
1:PageUtil.java
public class PageUtil {
    private int currentPage;   
    private int pageSize;      
    private int totalCount;    
    private int totalPage;
    ……get()  set()方法略
    public int getTotalPage()