Características básicas de MyBatis (2 de 3)

mabatis2Sentadas las bases generales sobre qué es MyBatis y en qué proyectos utilizarlo, voy a intentar resumir las características técnicas básicas más importantes de este framework de desarrollo de software. Como ya hemos comentado, es un framework que mapea las sentencias SQL que se pueden almacenar mediante ficheros XML o clases java. Utilizando Java, se utilizan anotaciones que permiten evitar el uso de los “engorrosos” XML y lo pongo entre comillas porque estas anotaciones tienen limitaciones a la hora de construir y ejecutar sentencias SQL más complejas por lo que os recomiendo directamente que utilicéis siempre ficheros XML y así poder utilizar todo su potencial.

De esto se deduce que si buscas un framework donde no utilizar XML o sentencias SQL, MyBatis no es lo que buscas. Prueba JPA, Hibernate u otros ORM's.

La configuración del famework se realiza mediante un fichero XML donde se define la conexión, el driver de la base de datos, los parámetros para el manejo de transacciones y otras características que se pueden ver en detalle aquí.

La potencia de MyBatis radica en la gestión de los Mapped Statements, que son los ficheros XML de mapeo SQL en donde realizaremos las operaciones.

Aquí definimos las operaciones típicas SQL (SELECT, INSERT, UPDATE y DELETE), ejecución de procedimientos almacenados y vistas, paso de parámetros y una gestión potentísima y muy simple en la obtención de los datos en objetos java. Además también podemos reutilizar código sql en el propio mapped statement para no tener que repetir código y evitar errores.

Por ejemplo:

<select id="selectPerson">
  SELECT * FROM PERSON WHERE ID = #{id}
</select>

Esta sentencia tiene un identificador único llamado “selectPerson”, recibe un parámetro de tipo entero y devuelve un HashMap con los resultados. La notación utilizada para los parámetros sería:

Por ejemplo:

#{id}

Unos ejemplos de INSERT, UPDATE y DELETE podrían ser:

  insert into Author (id,username,password,email,bio)
  values (#{id},#{username},#{password},#{email},#{bio})
 
  update Author set
    username = #{username},
    password = #{password},
    email = #{email},
    bio = #{bio}
  where id = #{id}
 
  delete from Author where id = #{id}

Si nuestra base de datos soporta claves autonuméricas, simplemente tendríamos que informar las propiedades useGeneratedKeys=”true” y en la propiedad keyProperty el nombre del campo donde guardaremos el valor. Por ejemplo, y tomando el ejemplo anterior si la columna id fuese nuestro auto-numérico en la tabla Author del ejemplo anterior, la consulta quedaría así:

  insert into Author (username,password,email,bio)
  values (#{username},#{password},#{email},#{bio})

Para ver estos y más ejemplos además de todas las posibles propiedades os recomiendo que os leáis con detenimiento el manual que está traducido al castellano.