【问题标题】:Implementing hibernate pagination实现休眠分页
【发布时间】:2014-03-19 07:26:48
【问题描述】:

在我的应用程序中,我只需要在 200 条记录中获取 20 条记录。以前,我从数据库中获取所有记录,并且每当用户输入页码或单击导航选项卡时,最初只在第一页显示前 20 条记录,用户可能会得到另一个20 条记录。

但现在我最初只需要从数据库中获取 20 条记录以及记录总数,然后我只能根据记录总数显示页码。每当用户点击相应的页码时,只需要显示通过点击数据库获取的相应记录

我是hibernate的新手,这就是我问这个问题的原因

【问题讨论】:

标签: hibernate


【解决方案1】:

分页可以通过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 变量以进行下一页请求。

希望对你有帮助

【讨论】:

    【解决方案2】:
    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;

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-06-29
      • 2013-11-08
      • 1970-01-01
      • 1970-01-01
      • 2015-01-19
      • 1970-01-01
      • 2014-03-27
      相关资源
      最近更新 更多