Saltar al contenido

Cómo implementar la paginación en Spring Boot con Hibernate

Si encuentras algo que te causa duda puedes comentarlo y te responderemos tan rápido como podamos.

Solución:

consideraría usar org.springframework.data.domain.Pageable directamente en su controlador. Luego, este objeto se puede pasar a su capa JPA, donde manejará la cantidad de resultados devueltos y el tamaño.

Lo bueno de usar Pageable es que devuelve un Page objeto que se puede usar en el front-end para formar la lógica de la página anterior/siguiente.

De forma predeterminada, esta clase utiliza parámetros de URL ‘página‘ y ‘Talla‘; por lo tanto, page=0&size=10 devolverá los primeros 10 elementos.

Por lo tanto, en su caso, el código podría ser algo como:

@ResponseBody
@RequestMapping("/top/pages/")
public List getAllPosts(@PageableDefault(value=10, page=0) Pageable pageable) throws ServletException 
    Page page = postDao.findAll(pageable);
    return page.getContent();

Fíjate en la anotación @PageableDefault es solo para configurar los valores predeterminados y no es necesario.

En el front-end, la llamada a la siguiente página puede ser Next; esto devolverá una lista de Publicaciones del 11 al 20.

Implementar la paginación en Spring Boot es bastante fácil, solo necesita seguir los pasos básicos:

1 – Extiende PagingAndSortingRepository en la interfaz del repositorio

public interface UserRepository extends PagingAndSortingRepository  

2 – La declaración del método debe ser como el siguiente ejemplo

Page userList(Pageable pageable);

3 – La implementación del método en la clase de servicio debería ser como el siguiente ejemplo

@Override
public Page userList(Pageable pageable) 
        return userRepository.findAll(pageable);

4 – El código de clase del controlador debería ser como el siguiente

@GetMapping("/list")
public String userList(Model model, Pageable pageable) 
        Page pages = userService.userList(pageable);
        model.addAttribute("number", pages.getNumber());
        model.addAttribute("totalPages", pages.getTotalPages());
        model.addAttribute("totalElements",       
                                      pages.getTotalElements());
        model.addAttribute("size", pages.getSize());
        model.addAttribute("users", pages.getContent());
        return "/user/list";

Desde la llamada frontal debe ser como a continuación

http://localhost:8080/application/user/list?page=0&size=5
http://localhost:8080/application/user/list?page=1&size=5
http://localhost:8080/application/user/list?page=2&size=5

Para más detalles, vea el video a continuación

Spring Boot: paginación básica

Spring Boot: paginación avanzada

Gracias por leer

Revisalo. tu controlador

@RequestMapping("/top/pages/pageno")
    @ResponseBody 
     public List getAllPosts(@PathVariable("pageno") int pageno, HttpServletRequest req, HttpServletResponse res) throws ServletException 

List postobj = postDao.getAllPostsByRank(new PageRequest(pageno,10));
return postobj;

tu dao

@Transactional
public interface PostDao extends CrudRepository

@Query(getAllPostsByRank)
List getAllPostsByRank(Pageable pageable);

final String getAllPostsByRank= "from Post order by value DESC";

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *