跳至主要內容

用 Hibernate 中的 Criteria 实现后台分页方法

Mr.Chen大约 1 分钟文章Java

在hibernate中,用criteria实现后台分页方法,不多说了直接看程序吧。

下面首先根据查询条件和每页记录数获得记录列表:

/**
  * 根据不同条件获取日志列表
  * @param inter 接口名称
  * @param firstResult 起始记录
  * @param maxResult  每页显示的最大记录数
  * @return
*/
public List<UipInterfaceLog> getUipInterfaceLogsByCondition (String inter,int firstResult, int maxResult) {
  List<UipInterfaceLog> result = null;
  Criteria criteria = this.getSession().createCriteria(UipInterfaceLog.class);
  criteria.add(Restrictions.like("inter", inter));
  criteria.setFirstResult(firstResult);
  criteria.setMaxResults(maxResult);
  result = criteria.list();
  return result;
}

在这里,为了简洁,我把查询的其他条件去掉了,用的时候可以自己添加,另外在使用的时候把Object.class换成相应的实体就可以了。

下面是得到符合条件的记录总数

/**
  * 根据条件得到记录总数
  * @param inter
*/
public int getUipInterfaceLogsByCondition (String inter) {
  List<UipInterfaceLog> result = null;
  Criteria criteria = this.getSession().createCriteria(Object.class);
  criteria.add(Restrictions.like("inter", inter));
// return criteria.list().size; 一定不能写成这样,如果这样写,随着数据库中记录的增多,每次创建的对象会越来越多,这个方法执行速度会越来越慢,最终会内存溢出导致系统崩溃。
  return ((Integer) criteria.setProjection(Projections.rowCount()).uniqueResult()).intValue();
}

代码就这么多,很容易看明白的。

此文转自:http://jiaxy917.javaeye.com/blog/452157open in new window