Page
package org.springframework.data.domain;
import org.springframework.core.convert.converter.Converter;
public interface Page<T> extends Slice<T> {
int getTotalPages();
long getTotalElements();
<S> Page<S> map(Converter<? super T, ? extends S> var1);
}
Slice
import java.util.List;
import org.springframework.core.convert.converter.Converter;
public interface Slice<T> extends Iterable<T> {
int getNumber();
int getSize();
int getNumberOfElements();
List<T> getContent();
boolean hasContent();
Sort getSort();
boolean isFirst();
boolean isLast();
boolean hasNext();
boolean hasPrevious();
Pageable nextPageable();
Pageable previousPageable();
<S> Slice<S> map(Converter<? super T, ? extends S> var1);
}
(1)Page是繼承了Slice;
(2)Page能夠獲取分頁中的所有結果,到當前頁的數據,然後通過上面的previousPageable()方法,又能獲取到前一頁和nextPageable()獲取後一頁的數據。所以上面的方法都是針對當前頁所說的;
(3)值得注意的是,Page實現了獲取所有記錄的數量和頁面的總數,但是它是通過count query來計算的,所以當數據源大的時候,就會顯示出劣勢;但是Slice在做某些操作的時候並不需要把所有的記錄數都計算一次!