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);
添加回答
舉報