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:
JpaRepository, adicione um método que retorna um objeto Page: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);
}
findAll com um objeto Pageable para realizar a paginação: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:
@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.