Hibernate实现不带条件的简单分页查询

Posted by luoxuehuan on August 19, 2015

Hibernate实现不带条件的简单分页查询。


主要用到:

Query query = getSessionDao().createQuery(hql1);

及两个分页条件:

query.setFirstResult(firstPage*pageSize);//设置查询起始数

query.setMaxResults(pageSize);//设置查询最大结果数

代码示例:

    /**
    * 不带条件的简单分页查询
    * @author lxh
    * @version 1.0
    *
    */
    publicclassQueryListByPageextendsHibernateDaoImpl{
    /**
    * * 简单的分页的查询数据列表
    *
    * @param modelName
    * 实体类名
    * @param firstPage
    * 查询第几页
    * @param pageSize
    * 每页显示几条数据
    * @return 一页的数据列表,和总页数
    */
    @SuppressWarnings("unchecked")
    publicQueryResult findAllList(String modelName,int firstPage,int pageSize){
    	String hql1="from "+modelName;
	    String hql2="select count(*) from "+modelName;
	    Query query = getSessionDao().createQuery(hql1);
	    query.setFirstResult(firstPage*pageSize);
	    query.setMaxResults(pageSize);
	    Long count =(Long) getSessionDao().createQuery(hql2).uniqueResult();
	    int totalPageNum=count.intValue()/pageSize+1;//总页数
	    List list = query.list();
	    // 返回结果
	    returnnewQueryResult(totalPageNum, list);
	    /**
	    *
	    * Map map = new HashMap();
	    * map.put("xx",list);
	    * map.put("xxx",totalPageNum);
	    * JSONObject jobj = JSONTUtil.toObject(map);
	    *
	    */
    }
   
    
    
    import java.util.List;
    publicclassQueryResult{
	    privateint totalPageNum;// 总记录数
	    privateList list;// 一页的数据
	    publicQueryResult(int totalPageNum,List list){
		    this.totalPageNum = totalPageNum;
		    this.list = list;
	    }
	    publicint getTotalPageNum(){
	    	return totalPageNum;
	    }
	    publicvoid setTotalPageNum(int totalPageNum){
	    	this.totalPageNum = totalPageNum;
	    }
	    publicList getList(){
	    	return list;
	    }
	    publicvoid setList(List list){
	   		this.list = list;
	    }
    }