2 回答
TA贡献1859条经验 获得超6个赞
您可以设置使用setFirstResult跳过记录并setMaxResults从该点获取记录数。
Criteria criteria = session.createCriteria(Foo.class);
criteria.setFirstResult(0);
criteria.setMaxResults(pageSize);
List<Foo> firstPage = criteria.list();
TA贡献1779条经验 获得超6个赞
您可以使用以下两种方法Criteria
criteria.setFirstResult(indexOfTheFirstRecord)指定第一条记录(从0开始) criteria.setMaxResults(numberOfTheRecords)指定记录数
为了简单起见,您可以使用此类
public class Pagination {
public static final Pagination EMPTY = new Pagination(0, 0);
/** Page index, begins from 0. */
private final int pageIndex;
/** Objects on page count. */
private final int pageSize;
public Pagination(int pageIndex, int pageSize) {
this.pageIndex = pageIndex;
this.pageSize = pageSize;
}
public void addToCriteria(Criteria criteria) {
if (this == EMPTY) {
return;
}
criteria.setMaxResults(pageSize);
criteria.setFirstResult(pageIndex * pageSize);
}
}
例子
获取pageIndex = 1大小为 10 的第二页 ( )(带有startIndex = 10,的记录endIndex = 19)
final int pageIndex = 1;
Pagination pagination = new Pagination(pageIndex, 10);
pagination.addToCriteria(criteria);
添加回答
举报