Persistencia de Datos en Spring Boot
Spring Boot utiliza por defecto MyBatis como ORM, una librería que nos permite mapear nuestra base de datos con los objetos de nuestra aplicación, simplificando enormemente la gestión de la base de datos y reduciendo nuestro código fuente. Siempre mejor opción que atacar a la base de datos directamente utilizando la API de Java JDBC (Java Database Connectivity) o incluso su solución ORM conocida como Java Persistence API (JPA).
La manera que tenemos en Spring Boot de asociar datos de la base de datos a un objeto en particular, es a través de MyBatis Mappers, que son creados como beans que podrán ser inyectados mas adelante en nuestros servicios que los necesiten.
Nuevo ejemplo de inserción de un usuario y utilización de opciones:
Y no solo podemos insertar atributos sino objetos enteros, ejemplo:
La manera que tenemos en Spring Boot de asociar datos de la base de datos a un objeto en particular, es a través de MyBatis Mappers, que son creados como beans que podrán ser inyectados mas adelante en nuestros servicios que los necesiten.
MyBatis Mappers
Ejemplo que se explica sólo, donde de nuevo las anotaciones juegan un papel determinante:@Mapper
public interface UserMapper {
@Select("SELECT * FROM USERS WHERE username = #{username}")
User getUser(String username);
}
En este ejemplo la query pregunta por todos los campos, el nombre de los campos debe coincidir con el de los atributos de la clase User, de no ser así deberemos hacer algunas tareas adicionales.
Nuevo ejemplo de inserción de un usuario y utilización de opciones:
@Mapper
public interface UserMapper {
@Insert("INSERT INTO USERS (username, salt, password, firstname, lastname) " +
"VALUES(#{username}, #{salt}, #{password}, #{firstName}, #{lastName})")
@Options(useGeneratedKeys = true, keyProperty = "userId")
int insert(User user);
}
El entero que devuelve el Insert no es el id asignado sino el número de filas afectadas!
Y no solo podemos insertar atributos sino objetos enteros, ejemplo:
@Insert(
"INSERT INTO TacoOrder (orderId, tacoName, tacoPrice, count)"
+ " VALUES (#{orderId}, #{tacoName}, #{tacoPrice}, #{count})"
)
int addToOrder(TacoOrder tacoOrder);
Por último mencionar que también tenemos @Update y @Delete, pero toda la información necesaria la puedes encontrar en este enlace
Comentarios
Publicar un comentario