分页查询是Web项目经典应用,下面是实现Hibernate分页查询的具体实现。关键点是使用了Query的两个重要的函数,SetFirstResult(int firstResult)用于设置从哪一个对象开始检索,SetMaxResult(int maxResult)用于设置每次检索返回的最大对象数。
public class Test { public static void main(String[] args) {
SessionFactory sf=new Configuration().configure().buildSessionFactory(); Session session=sf.openSession(); String hql="from Employee"; String hql2="select count(*) from Employee"; Query query=session.createQuery(hql2); List list=query.list(); int count=Integer.parseInt(list.get(0).toString()); int pageCount=(count+pageSize-1)/pageSize; //计算总页数 Query q=session.createQuery(hql); for(int i=0;i<pageCount;i++) { q.setFirstResult(i*pageSize); //设置开始检索的对象 q.setMaxResults(pageSize); //设置每次显示的对象数 List list2=q.list();
Iterator it=list2.iterator(); System.out.println("**************"); while(it.hasNext()) { Employee emp=(Employee)it.next(); System.out.println(emp.getName()); } } } }