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