Sorting and Pagination

1. Sorting

Iterable<T>
findAll(Sort sort)

Returns all entities sorted by the given options.

Sort by Name (Ascending)

public void sortUser() {
    List<User> users = userRepository.findAll(Sort.by("name"));
    users.forEach(u -> {
        System.out.println(u.getId() + " " + u.getName() + " " + u.getEmail());
    });
}

Sort by Name (Descending)

public void sortUserDesc() {
    List<User> users = userRepository.findAll(Sort.by(Direction.DESC, "name"));
    users.forEach(u -> {
        System.out.println(u.getId() + " " + u.getName() + " " + u.getEmail());
    });
}

Sort by Multiple Fields (ID + Name)

public void sortUserbyIdAndName() {
    List<User> users = userRepository.findAll(Sort.by(Direction.DESC, "id", "name"));
    users.forEach(u -> {
        System.out.println(u.getId() + " " + u.getName() + " " + u.getEmail());
    });
}

2. Pagination

Pagination allows to retrieve chunks of data (pages), rather than all rows at once. Page start index at 0

Pageable.ofSize(n) :

Pageable.ofSize(n) : creates a Pageable that fetches the first page (page index = 0) with n records. Fetch always first page with n records.

 Page<User> pageObj = userRepository.findAll(Pageable.ofSize(3));

PageRequest.of(...)

create a Pageable object, which internally tells Hibernate how to apply pagination (limit and offset) to the SQL queries.

syntax:

PageRequest.of(int page, int size)
PageRequest.of(int page, int size, Sort sort)
here ,

  • page : zero-based page index (0 = first page).
  • size : number of records per page.
  • sort : optional for sorting.

Pagination with Sorting

public void getUsersByPage(int pageNumber, int pageSize) {

  // Page<User> pageObj = userRepository.findAll(PageRequest.of(pageNumber, pageSize));
  // Page<User> pageObj = userRepository.findAll(PageRequest.of(pageNumber, pageSize, Sort.by("id")));
  // Page<User> pageObj = userRepository.findAll(PageRequest.of(pageNumber, pageSize, Sort.by(Direction.DESC, "name")));

    Page<User> pageObj= userRepository.findAll(PageRequest.of(pageNumber, pageSize, Direction.DESC, "id"));
    if (!pageObj.isEmpty()) {
        List<User> users = pageObj.getContent();
        sers.forEach(u -> {
        System.out.println(u.getId() + " " + u.getName() + " " + u.getEmail());

      });
   }
}


↑ Back to top

Github Code : CRUD Operation