Paginação

É 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"));

O que foi aprendido?