¿Qué son y cómo utilizar los Query Methods para listas y fechas?
Los Query Methods son una herramienta poderosa que nos facilitan la recuperación de información de una base de datos mediante el uso de convenciones de nomenclatura específica. A través de ellos, podemos realizar consultas basadas en condiciones como listas o fechas. En este artículo, exploraremos cómo crear un método de consulta que permita recuperar órdenes de una pizzería según una fecha específica.
¿Cómo se crean consultas basadas en fechas?
Para recuperar las órdenes que nuestra pizzería ha tenido hoy, inicialmente, es esencial crear un método en nuestro OrderRepository. Este método utilizará la convención findAllByDateAfter para obtener órdenes con fecha posterior a una específica:
Luego, se desarrollará un servicio que utiliza este método para devolver las órdenes del día. Se crea un objeto LocalDateTime para obtener la fecha actual:
Además de fechas, los Query Methods también permiten gestionar listas. Supongamos que queremos listar todas las órdenes externas (domicilio o para llevar). Para esto, creamos un QueryMethod que use el keyword IN.
En el OrderRepository, usamos el método findAllByMethodIn, recibiendo una lista de métodos de entrega:
Además de obtener datos específicos, los Query Methods permiten realizar operaciones como contar elementos. Aquí se muestra un ejemplo de cómo contar cuántas pizzas veganas ofrece una pizzería.
En el PizzaRepository, se puede usar el método countBy para determinar cuántas pizzas tienen una propiedad específica, en este caso, si son veganas:
Podemos aplicar esta lógica en un servicio para imprimir el resultado en la consola:
@ServicepublicclassPizzaService{publicvoidcountVeganPizzas(){int veganPizzas = pizzaRepository.countByVeganTrue();System.out.println("Número de pizzas veganas: "+ veganPizzas);}}
Al ejecutar esta funcionalidad, el sistema consulta cuántas entradas en la tabla cumplen la condición indicada y nos devuelve el total.
¿Qué consideraciones adicionales hay en el uso de query methods?
Facilidad de lectura: Los Query Methods son intuitivos y permiten entender la lógica de la consulta directamente desde su nombre.
Evitar consultas complejas: Aunque son poderosos, se recomienda no abusar de su uso para consultas extremadamente complejas, ya que podrían afectar el rendimiento.
Gestión de métodos IN: Para consultas con el keyword IN, asegúrate de manejar listas de manera adecuada, evitando duplicados y verificando los valores disponibles en la base de datos.
¡Con estos ejemplos de uso de Query Methods para manejar fechas, listas y contar elementos, estarás equipado con las habilidades necesarias para manejar diferentes escenarios en tus aplicaciones! Continúa explorando y aplicando estas técnicas para convertirte en un experto en manejo de bases de datos.
seria excelente, tener un curso para realizar el front de la aplicación, así mismo poder usar microservicios. de resto el curso va excelente.
Ya lo han mencionado mucho, pero si eres estudiante y cuentas con correo institucional, si descarga la versión Ultimate que obtienes x serlo, ayuda mucho a la hora de realizar los Query methods.
(Primer comentario)
No estaria mal que con la cuenta de platzi se pudiese tener acceso para la licencia de estudiantes de IntelliJ Idea Ultimate (:wink: @Staff)
Recomiendo usar la libreria log4j para tener mejores logs, por ejemplo podemos ver desde que paquete estamos imprimiendo el contador, parece una tonteria pero a nivel productivo es bastante importante.
Estoy de acuerdo con el uso de lombok y la anotación @Slf4j es facil implementar los logs
el tema es que por razones de seguridad es una mala practica. Obvio que con los logs se obtiene mejor visualizacion de las fallas y donde pero hay que escribirlos de forma estandarizada segun la institucion y el nivel de seguridad perimetral que se tenga.
esto es magia pura. Mas cursos de Java
✅
Si no están tomando todas las clases el mismo día, pueden hacer colocar el método en OrderService de esta manera:
Si usamos UUID como tipo de dato para las claves primarias, ¿cómo debería el sistema manejar las búsquedas? Considerando que los usuarios no tendrán el UUID del objeto que desean consultar, ¿qué alternativas podrían implementarse para que puedan encontrar la información que necesitan de manera eficiente?
Usar UUID como clave primaria no cambia la forma en que los usuarios buscan información, porque los usuarios nunca manejan directamente los IDs, sean numéricos o UUID. En una app real, el usuario busca por datos (nombre, dni, etc), y el frontend lo maneja internamente para intereactuar con la API
✅
Tengo un error con el metodo Count: "Failed to convert value of type 'java.lang.String' to required type 'int'; For input string: "available" al lanzar por parametro el String "available" en el postman?