É um forma de consulta que visa realizar consultas mais rápidas através da paginação dos dados.
No Spring data, isto é feito através dos Repositories que herdam de PagingAndSortingRepository.
@Repository
public interface FuncionarioRepository extends PagingAndSortingRepository<Funcionario, Integer>{
//...
}
Com o repository Herdando dessa Classe, é possível passar um objeto Pageable para o método find(). Desse modo, é feita a paginação da consulta.
private void visualizar(Scanner scanner){
System.out.println("Qual página você deseja visualizar?");
Integer page = scanner.nextInt();
Pageable pageable = PageRequest.of(page,5, Sort.unsorted());
Page<Funcionario> funcionarios = funcionarioRepository.findAll(pageable);
System.out.println(funcionarios); //mostra página atual e total de páginas
System.out.println("Página atual "+funcionarios.getNumber());
System.out.println("Total de funcionários "+funcionarios.getTotalElements());
funcionarios.forEach(funcionario -> System.out.println(funcionario));
}
Também é possível ordenar a paginação através da classe Sort.
Pageable pageable = PageRequest.of(page,5, Sort.by(Sort.Direction.ASC, "nome"));