Primeros pasos con MyBatis

1
2319

En este breve tutorial, veremos como iniciarse con MyBatis.
Vamos a mostrar un breve ejemplo muy sencillo de cómo configurar MyBatis
a través de anotaciones.

Índice de contenidos


1. Introducción

MyBatis (anteriormente iBatis) es un framework de persistencia que soporta SQL.
Este framework simplifica la programación frente al uso de JDBC. MyBatis puede
configurarse con XML o anotaciones.

En este caso vamos a ver un breve ejemplo de la configuración mediante
anotaciones, ya que en este portal podemos encontrar este tutorial
de la configuración de MyBatis mediante XML.


2. Entorno

El tutorial está escrito usando el siguiente entorno:

  • Hardware: Portátil MacBook Pro 15′ (2,2 Ghz Intel Core i7, 8GB DDR3).
  • Sistema Operativo: Mac OS High Sierra 10.13.2
  • Entorno de desarrollo: Eclipse Oxygen
  • Apache Maven 3.5.2
  • Spring 5.0.2.RELEASE
  • MyBatis 3.2.4
  • MySql 5.1.34


3. Configuración

En primer lugar, vamos a añadir las dependencias necesarias en el pom.xml para poder
comenzar con nuestro ejemplo.

pom.xml

Una vez introducidas las dependencias en el fichero pom.xml, vamos a continuar
con la configuración de MyBatis a través de anotaciones.

Creamos una clase, que en este ejemplo la denominaremos AppConfig.java. En esta
clase vamos a configurar tanto MyBatis, como la conexión con la base de datos.
En primer lugar esta clase tendra la anotación de @Configuration, esta anotación
indica que esta clase declara uno o más métodos @Bean
y puede ser procesada por el contenedor de Spring. La anotación @Bean indica que
ese método produce un bean.

A continuación, para indicar donde se encuentra la interfaz donde MyBatis va a
realizar el mapeo con las sentencias SQL, utilizamos la anotación @MapperScan.
En este caso en vez de Mapper (nombre más común en la configuración con XML,
hemos utilizado el nombre de Repository).

AppConfig.java

Como podemos observar, en el primer método denominado con el nombre dataSource()
se establece la conexión con la base de datos, en este ejemplo se decide utilizar
MySql.

En el segundo método denominado transactionManager(), utiliza la conexión obtenida
del DataSource para gestionar la transacción.


El tercer método sqlSessionFactory() es el encargado de crear la sesión con MyBatis,
como estamos utilizando Spring se usa SqlSessionFactoryBean para crear la sesión.


4. Interfaz de Mapeo

Como hemos mencionado anteriormente, en esta interfaz es donde se van a mapear
las sentencias SQL gracias a MyBatis, es aquí donde podemos apreciar la simplificación
de código respecto a JDBC.


4.1. Definición del modelo de datos

En primer lugar definimos la clase Footballer, que será el modelo de datos o
POJO (Plain Old Java Object) a introducir en la base de datos.

Footballer.java


4.2. Definición de la interfaz de mapeo

Ahora sí procedemos a la definición de nuestra interfaz de mapeo, en este ejemplo
solo hemos definido una operación de inserción y una operación
de búsqueda en la base de datos.

FootballerRepository.java

Como se ha mencionado anteriormente la palabra Mapper es mas utilizada a la hora
de realizar la configuración con XML, por eso en nuestro caso hemos decidido utilizar
la palabra Repository.

Resulta llamativo la notación #{id} por ejemplo, a la hora de realizar la inserción de un
elemento en la base de datos. Con JDBC este parámetro iría identificado con ?
en el PreparedStatement.

Pero en este caso con esta notación, se indica a MyBatis que cree un parámetro
PreparedStatement, de forma que resulta mucho más sencillo, ya que requiere menos
código y menos esfuerzo a la hora de instanciar los objetos.

Por último, vamos a comentar la anotación @Repository, con esta anotación se indica
que la clase, en este caso la interfaz, es un componente al igual que se hace con @Service, @Controller y el padre de todos @Component, indicando a Spring que es un bean a incluir en su contexto para poder ser instanciable en otros componentes.


5. Contexto de Spring

Para terminar con nuestro ejemplo vamos a levantar el contexto de Spring, para
ello vamos a utilizar la clase AnnotationConfigApplicationContext, que va a
identificar todas las anotaciones mencionadas anteriormente.

App.java

Una vez levantado el contexto de Spring con la configuración definida en la clase
AppConfig, se instancia el Mapper donde se mapean las sentencias SQL con
MyBatis (FootballerRepository.java) y se procede a la inserción y búsqueda en
la base de datos para terminar con el ejemplo.

Un aspecto que me gustaría destacar de cara a futuras aplicaciones, a la hora de crear un
controlador o una capa de servicios, para inyectar la interfaz de mapeo se utiliza
la anotación @Autowired en la definición del atributo que corresponda a la interfaz
de mapeo.


6. Conclusiones

Como hemos podido apreciar, el framework MyBatis nos permite realizar operaciones
de persistencia mediante una forma sencilla, ya que nos permite simplificar
nuestro código respecto a JDBC.


7. Referencias

  • http://www.mybatis.org/spring/es/index.html
  • http://www.mybatis.org/spring/apidocs/reference/org/mybatis/spring/SqlSessionFactoryBean.html

1 Comentario

  1. Hola Ivan, genial articulo, tengo una consulta, de que forma se puede configurar el log de mybatis para log4j2.xml?. No encuentro información en la documentación de mybatis, parece que se quedaron con la primera version de log4j.

    Gracias!

Dejar respuesta

Please enter your comment!
Please enter your name here