A paginação no Spring JPA com Spring Boot é bastante simples de configurar e usar. O Spring Boot fornece suporte nativo para paginação usando a classe PageRequest do Spring Data.

Aqui está um exemplo de como usar a paginação no Spring JPA com Spring Boot:

  1. Certifique-se de ter o Spring Boot e o Spring Data JPA configurados corretamente em seu projeto.
  2. Em sua interface de repositório que estende JpaRepository, adicione um método que retorna um objeto Page:

👨🏼‍💻 Exemplo prático

import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;

public interface UsuarioRepository extends JpaRepository<Usuario, Long> {
    Page<Usuario> findAll(Pageable pageable);
}
  1. Em sua classe de serviço ou controlador, injete o repositório e utilize o método findAll com um objeto Pageable para realizar a paginação:

👨🏼‍💻 Exemplo prático

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.stereotype.Service;

@Service
public class UsuarioService {
	@Autowired
  private UsuarioRepository usuarioRepository;

  public Page<Usuario> obterUsuarios(int pagina, int itensPorPagina) {
	  Pageable paginacao = PageRequest.of(pagina, itensPorPagina,Sort.by("idade").descending());
    return usuarioRepository.findAll(paginacao);
  }
}

Agora você pode usar o método getUsers em seu controlador para obter os usuários paginados:

👨🏼‍💻 Exemplo prático

@RestController
@RequestMapping("/usuarios")
public class UsuarioController {
		@Autowired
    private UsuarioService usuarioService;

    @GetMapping
		public Page<User> obterUsuarios(
		        @RequestParam(required = false, defaultValue = "0") int pagina,
            @RequestParam(required = false, defaultValue = "10") int itensPorPagina
		) {		
		    return userService.obterUsuarios(numeroDaPagina, numeroDeItens);
		}
}

Neste exemplo, os parâmetros pagina e itensPorPagina foram definidos como opcionais (required = false). Isso significa que eles não são obrigatórios e podem ser omitidos da URL. Caso não sejam fornecidos, eles assumirão os valores padrão especificados na anotação defaultValue. O pagina terá o valor padrão de 0 e o itensPorPagina terá o valor padrão de 10.

Agora, você pode acessar a rota /usuarios?pagina=1&itensPorPagina=5 para fornecer os valores pagina e itensPorPagina. Se nenhum valor for fornecido na URL, os valores padrão serão utilizados.

Com essa abordagem, os parâmetros pagina e itensPorPagina se tornam opcionais, permitindo que você defina valores padrão ou deixe-os ausentes na URL.