Implementing hibernate pagination
在我的应用程序中,我只需要获取200条记录中的20条记录。以前,我是从数据库中获取所有记录的,最初只要用户输入页码或单击导航选项卡,第一页就只显示前20条记录,用户可能会获得另一条记录20条记录。
但是现在我最初只需要从数据库中获取20条记录,还需要获取记录总数,那么只有我可以根据记录总数显示页码。每当用户单击相应的页码时,只需要显示相应的记录即可,这些记录是通过点击数据库来获取的。
我刚Hibernate,这就是为什么我问这个问题
分页可以使用以下两种
1 2 | query.setFirstResult(2); query.setMaxResults(4); |
setFirstResult(int startingRecordsFrom):
借助此方法,我们可以在从记录开始的查询中设置结果。
setMaxResults(int maxRecords):
借助此方法,我们可以在查询中设置最大结果。
假设您有100条记录,而您只希望检索10条记录。您的代码应该是这样的
1 2 3 4 5 6 7 | final int pageSize =10; String hql ="FROM Employee"; Query query = sess.createQuery(hql); query.setFirstResult(updatedStartIndex); query.setMaxResults(pageSize); List<Employee> employees = query.list(); updatedStartIndex = updatedStartIndex +pageSize; |
在这里,您必须在程序中的某个位置维护您的updateStartIndex变量,以便进行下一页请求。
希望这会有所帮助
1 2 3 4 5 | getHibernateTemplate().execute(new HibernateCallback<List<YourObject>>() { public List<YourObject> doInHibernate(Session session) throws HibernateException, SQLException { return session.createCriteria(YourObject.class).setMaxResults(resultsPerPage).setFirstResult(offset).list(); } }); |
您还需要计数以查看您有多少记录。将该计数除以resultPerPage,就可以得到页面数。偏移量将为currentPage * resultPerPage-resultPerPage;