JPA中Slice和Page的区别

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在做某些操作的时候并不需要把所有的记录数都计算一次!

你可能感兴趣的:(Springboot)