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.
PageRequest.of(...)
create a Pageable object, which internally tells Hibernate how to apply pagination (limit and offset) to the SQL queries.
syntax:
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());
});
}
}
Github Code : CRUD Operation