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.

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

Entradas populares de este blog

Django REST framework

Envío de checkboxes o selector multiple por AJAX con jQuery

Django: relaciones polimórficas