Uso de consultas complejas
Introducción
En este ejercicio se modificarán los ficheros *.xml de los DAO para hacer consultas más complejas contra otras tablas de la base de datos.
Modificar el DAO para añadir una consulta compleja
Actualizaremos el DAO de OfferCandidatesDao para agregarle nueva información en el *.xml. En este caso, tratará de añadir una nueva consulta que refleje las otras tablas que se usan desde este DAO para relacionar las ofertas, los candidatos y el estado. Como esta tabla solo contiene identificadores, nuestra nueva consulta permitirá conocer todos los datos y no únicamente sus identificadores.
En el fichero *.xml, agregaremos una nueva etiqueta Queries
en el que añadiremos las nuevas consultas mediante la etiqueta Query
. En dicha consulta, podremos indicarle la consulta a ejecutar a través de la etiqueta Sentence
. Como queremos utilizar las columnas y condiciones que nos indiquen a través de la petición, usaremos los marcadores #COLUMNS#
y #WHERE#
. La utilización de la etiqueta AmbiguousColumn
indicará cuáles son las columnas ambiguas (en este caso, la columna DESCRIPTION de OFFER_CANDIDATE_STATUS y OFFER, usando el nombre de DESC_STATUS para OFFER_CANDIDATE_STATUS). En caso de que queramos modificar la consulta que se realiza por defecto, el identificador de la etiqueta sería defaultQuery id="default"
. Como queremos mantener la consulta por defecto, pondremos otro identificador.
OfferCandidatesDao.xml
En el fichero java, añadiremos una nueva constante, que tendrá el mismo valor que el nombre del identificador que hemos establecido para la consulta.
OfferCandidatesDao.java
- hr
- hr-api
- src
- main
- java
- com
- ontimize
- hr
- api
- core
- service
- ICandidateService.java
- IMasterService.java
- IOfferService.java
- IUserService.java
- service
- core
- api
- hr
- ontimize
- com
- java
- main
- pom.xml
- src
- hr-boot
- src
- main
- java
- com
- ontimize
- hr
- ServerApplication.java
- hr
- ontimize
- com
- resources
- application.yml
- java
- main
- pom.xml
- src
- hr-model
- src
- main
- db
- templateDB.script
- templateDB.txt
- java
- com
- ontimize
- hr
- model
- core
- dao
- CandidateDao.java
- EducationDao.java
- ExperienceLevelDao.java
- OfferCandidatesDao.java
- OfferCandidateStatusDao.java
- OfferDao.java
- OfferStatusDao.java
- OriginDao.java
- ProfileDao.java
- StatusDao.java
- UserDao.java
- UserRoleDao.java
- service
- CandidateService.java
- MasterService.java
- OfferService.java
- UserService.java
- dao
- core
- model
- hr
- ontimize
- com
- resources
- dao
- CandidateDao.xml
- EducationDao.xml
- ExperienceLevelDao.xml
- OfferCandidatesDao.xml
- OfferCandidateStatusDao.xml
- OfferDao.xml
- OfferStatusDao.xml
- OriginDao.xml
- placeholders.properties
- ProfileDao.xml
- RoleDao.xml
- RoleServerPermissionDao.xml
- ServerPermissionDao.xml
- StatusDao.xml
- UserDao.xml
- UserRoleDao.xml
- dao
- db
- main
- pom.xml
- src
- hr-ws
- src
- main
- java
- com
- ontimize
- hr
- ws
- core
- rest
- CandidateRestController.java
- MainRestController.java
- MasterRestController.java
- OfferRestController.java
- TestRestController.java
- UserRestController.java
- rest
- core
- ws
- hr
- ontimize
- com
- java
- main
- pom.xml
- src
- .gitignore
- Archetype_ontimize_boot.postman_collection.json
- pom.xml
- hr-api
Modificar la interfaz y el servicio para añadir el nuevo método
Actualizaremos la interfaz IOfferService para añadir el nuevo método que realizará la consulta. En caso de ser la consulta por defecto, no sería necesario hacer ninguno de los pasos indicados a continuación.
Para simplificar el código que se está escribiendo, pueden aparecer tres puntos (…) en algunas partes del código. Esto indica que puede haber código anterior antes y después de esos puntos.
IOfferService.java
En el servicio, implementamos el nuevo método de la interfaz, utilizando el daoHelper para crear la consulta, pero añadiendo un nuevo parámetro a continuación de la lista de columnas a consultar, que será el identificador de la consulta que hemos creado en el DAO (y que hemos asociado a una constante en el fichero java correspondiente).
OfferService.java
- hr
- hr-api
- src
- main
- java
- com
- ontimize
- hr
- api
- core
- service
- ICandidateService.java
- IMasterService.java
- IOfferService.java
- IUserService.java
- service
- core
- api
- hr
- ontimize
- com
- java
- main
- pom.xml
- src
- hr-boot
- src
- main
- java
- com
- ontimize
- hr
- ServerApplication.java
- hr
- ontimize
- com
- resources
- application.yml
- java
- main
- pom.xml
- src
- hr-model
- src
- main
- db
- templateDB.script
- templateDB.txt
- java
- com
- ontimize
- hr
- model
- core
- dao
- CandidateDao.java
- EducationDao.java
- ExperienceLevelDao.java
- OfferCandidatesDao.java
- OfferCandidateStatusDao.java
- OfferDao.java
- OfferStatusDao.java
- OriginDao.java
- ProfileDao.java
- StatusDao.java
- UserDao.java
- UserRoleDao.java
- service
- CandidateService.java
- MasterService.java
- OfferService.java
- UserService.java
- dao
- core
- model
- hr
- ontimize
- com
- resources
- dao
- CandidateDao.xml
- EducationDao.xml
- ExperienceLevelDao.xml
- OfferCandidatesDao.xml
- OfferCandidateStatusDao.xml
- OfferDao.xml
- OfferStatusDao.xml
- OriginDao.xml
- placeholders.properties
- ProfileDao.xml
- RoleDao.xml
- RoleServerPermissionDao.xml
- ServerPermissionDao.xml
- StatusDao.xml
- UserDao.xml
- UserRoleDao.xml
- dao
- db
- main
- pom.xml
- src
- hr-ws
- src
- main
- java
- com
- ontimize
- hr
- ws
- core
- rest
- CandidateRestController.java
- MainRestController.java
- MasterRestController.java
- OfferRestController.java
- TestRestController.java
- UserRestController.java
- rest
- core
- ws
- hr
- ontimize
- com
- java
- main
- pom.xml
- src
- .gitignore
- Archetype_ontimize_boot.postman_collection.json
- pom.xml
- hr-api
Podemos probar esta nueva consulta con la ayuda de Postman