How can I get the total number of pages on Spring Data?

2018-05-30 java pagination spring-data-jpa repository

I have an Angular app that shows a list of entities and I have a 'show more' button that increments page number and uses this method:

Page<myEntity> result = myRepo.findByAttr(attr, page);

I format this result and send it via REST's JSON. I want to disable 'show more' button if there's no further pages to get. There's a 'frameworkie' specific way to retrieve this number or I should use findAll() and count through this list?

Answers

This is the source code of Page interface

public interface Page<T> extends Slice<T> {

    /**
     * Returns the number of total pages.
     * 
     * @return the number of total pages
     */
    int getTotalPages();

    /**
     * Returns the total amount of elements.
     * 
     * @return the total amount of elements
     */
    long getTotalElements();

    /**
     * Returns a new {@link Page} with the content of the current one mapped by the given {@link Converter}.
     * 
     * @param converter must not be {@literal null}.
     * @return a new {@link Page} with the content of the current one mapped by the given {@link Converter}.
     * @since 1.10
     */
    <S> Page<S> map(Converter<? super T, ? extends S> converter);
}

You have getTotalElements() to get the total number of matching element.
getTotalPages() will give total number of pages.

Use result.getTotalElements() to get the total number of matching element.

Use result.getTotalPages() to get the total number of page.

p.s. Use result.getContent() to get the content as List<>

Related