En ese post explicamos como JpaRepository nos daba una serie de métodos predefinidos. Los cuales podían ser usados simplemente extendiendo de dicha interfaz, sin necesidad de implementar nada.
Ahora bien, el número de métodos es limitado y que hay que hacer para crear nuevos métodos. Aunque parezca que en un principio ya tendremos que crear una clase de implementación que nos haga el trabajo, los chicos de Spring nos han proveído de varios métodos para evitar esto en lo máximo posible.
Por un lado tenemos los métodos automáticos según el nombre. Y es que dependiendo de el nombre que le demos en la declaración del método, actuará de una forma u otra. Aquí varios ejemplos. Donde aparece <Atributo> quiere indicar el nombre de un atributo de la clase por la que se busca.
- Buscar por un determinado atributo: findBy<Atributo>
- Buscar por varios atributos: findBy
Y así, múltiples posibilidades más dependiendo de los abundantes keyword que proveen.
Pero esto en todos los casos no es suficiente. Si por ejemplo necesito una búsqueda por 5 atributos, el nombre del método sería demasiado largo. Para ello nos proveen de la anotación @Query. Con esta anotación podremos indicar cual es la sentencia que queremos ejecutar. Dentro de esta opción también tenemos varias opciones para hacerlo.
- Ejecutar HQL
@Query("select l from Libro l where l.nombre like ?1 or l.autor like ?2 or l.serie like ?3") Page- Ejecutar código nativo de la BBDDfindSearchBooks(String nombre, String autor, String serie, Pageable pagina);
@Query(value = "SELECT FROM USERS WHERE EMAIL_ADDRESS = ?0", nativeQuery = true) User findByEmailAddress(String emailAddress);- Indicar mediante parametros cuales son los atributos de la sentencia
@Query("select l from Libro l where l.nombre like :nombre or l.autor like :autor or l.serie like :serie") ListfindSearchBooks(@Param("nombre") String nombre, @Param("autor") String autor, @Param("serie") String serie);
Como veis todo bastante básico. En esta página de Spring podreis ver el resto de keywords y más información sobre su uso.
No hay comentarios:
Publicar un comentario