Contenido del curso
Primeros pasos
Spring Data Repositories
- 7

Qué son los Spring Data Repositories
08:39 min - 8

Guardar y Actualizar Registros con Spring Data Repositories
08:34 min - 9

Eliminar elementos con Spring Data JPA: método deleteById
05:36 min - 10

Lazy vs Eager en relaciones JPA
15:09 min - 11

Query Methods en Spring para Consultas Personalizadas
08:27 min - 12

Filtrar pizzas con Containing y Not en JPA
07:27 min - 13

Fechas y listas en query methods de JPA
11:25 min - 14

findTop y Optional en Spring Data JPA
09:30 min - 15

Paginación y Ordenación con Spring Data Repositories
07:39 min - 16

Ordenamiento Dinámico con Paging and Sorting Repository
Viendo ahora
Personalización de queries
Características avanzadas
Próximos pasos
Ordenamiento Dinámico con Paging and Sorting Repository
Resumen
¿Cómo implementar un ordenamiento dinámico en un repositorio en Spring?
Imagina que puedes controlar la manera en que los datos se presentan, no solo la cantidad de información como con la paginación, sino también el orden en que estos aparecen. Eso es precisamente lo que lograremos con el Paging and Sorting Repository en Spring. Este tutorial te guiará en la implementación de un sistema que facilita tanto la paginación como el ordenamiento dinámico de datos en tus aplicaciones.
¿Cómo crear un nuevo método de consulta con paginación y ordenamiento?
Para comenzar, es crucial entender que nuestro nuevo método de consulta no retornará una lista, sino que regresará una página de nuestra entidad. En este ejemplo, la entidad se llama PXAEntity. Crearemos un método llamado FindByAvailableTrue que, usando el Paging and Sorting Repository, nos permitirá consultar todas las entidades disponibles.
public Page<PXAEntity> findByAvailableTrue(Pageable pageable);
Este método recibe un objeto Pageable, el cual es esencial para gestionar tanto la paginación como el ordenamiento de manera efectiva.
¿Cómo manejar los parámetros de paginación y ordenamiento?
Para realizar consultas paginadas y ordenadas, debemos considerar ciertos parámetros: la página que queremos consultar, cuántos elementos incluir en cada página, y la columna por la cual deseamos ordenar los resultados. Esto lo controlamos a través de un PageRequest, que envía un tercer elemento, el Sort, junto con el string sortBy.
Modificaré el servicio para ajustar el tipo de retorno y enviar los parámetros necesarios al repositorio:
PageRequest pageRequest = PageRequest.of(page, size, Sort.by(Sort.Order.asc(sortBy))); Page<PXAEntity> result = pxaPagingAndSortRepository.findByAvailableTrue(pageRequest);
En este caso, el resultado será una página que podemos pasar posteriormente al controlador.
¿Cómo se actualiza el controlador para recibir parámetros?
El siguiente paso es actualizar el controlador de nuestra aplicación para que pueda manejar nuevos parámetros de entrada. Utilizaremos RequestParam para recibir el sortBy y asignar un valor por defecto como "price":
@GetMapping("/available") public Page<PXAEntity> getAvailable(@RequestParam(defaultValue = "0") int page, @RequestParam(defaultValue = "10") int size, @RequestParam(defaultValue = "price") String sortBy) { PageRequest pageRequest = PageRequest.of(page, size, Sort.by(Sort.Order.asc(sortBy))); return pxaService.findByAvailableTrue(pageRequest); }
Esto nos permitirá, por defecto, ordenar los resultados por el precio de las pizzas.
¿Cómo configurar el ordenamiento ascendente o descendente?
Agregar la capacidad de ordenar ascendentemente o descendentemente brinda flexibilidad adicional a nuestros métodos de consulta. Para ello, introducimos un nuevo parámetro llamado sortDirection, el cual predeterminamos como ascendente:
@RequestParam(defaultValue = "ASC") String sortDirection
Con este cambio, podemos construir un objeto Sort que reaccione a este parámetro:
Sort sort = Sort.by(Sort.Direction.fromString(sortDirection), sortBy); PageRequest pageRequest = PageRequest.of(page, size, sort);
Implementar este ajuste en el controlador nos da la opción de manejar consultas que ordenen datos en ambas direcciones sin esfuerzo adicional.
¿Qué beneficios proporciona el uso de Page Unsorting Repository?
Integrar paginación y ordenamiento dinámico en tu aplicación mejora significativamente la experiencia del usuario final. No solo le permite acceder a grandes volúmenes de datos de manera más efectiva, sino que también le da control sobre la manera en que se presenta la información. Esto es un gran paso hacia el desarrollo de aplicaciones web potentes y adaptables. ¡Utiliza estas técnicas en tus proyectos y observa la diferencia!