在我的应用程序中,我需要在200个中只获得20条记录。之前我从数据库中获取所有记录,并且每当用户输入页码时,或者通过单击导航选项卡,用户可能会获得另一条记录,最初只显示第一页中的前20条记录20条记录。
但是现在我需要最初只从数据库中获取20条记录以及记录总数,然后我才能根据记录总数显示页码。每当用户点击相应的页码时,只需要显示通过点击数据库获取的相应记录
我是hibernate的新手,这就是我提出这个问题的原因
答案 0 :(得分:4)
可以使用以下两种Query
接口方法实现分页。
query.setFirstResult(2);
query.setMaxResults(4);
setFirstResult(int startingRecordsFrom): 借助此方法,我们可以在查询中设置结果,该结果从记录开始。
setMaxResults(int maxRecords): 借助此方法,我们可以在查询中设置最大结果。
假设您有100条记录,并且您希望仅检索10条记录。你的代码应该是这样的
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;
在这里,您必须在程序中的某个位置维护 updatedStartIndex 变量以用于下一页请求。
希望这是有帮助的
答案 1 :(得分:0)
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;