Configuración Inicial del Entorno
MyBatis es un framework de persistencia semi-automatizado que requiere un buen dominio de SQL para su uso efectivo. A continuación, se detallan los pasos para configurar un proyecto básico.
1. Preparación de la Base de Datos
Cree una base de datos de ejemplo y una tabla para almacenar información de empleados. Ejecute el siguiente scriptt SQL:
-- Crear base de datos ejemplo_db si no existe
CREATE DATABASE IF NOT EXISTS ejemplo_db CHARACTER SET utf8;
USE ejemplo_db;
-- Eliminar tabla empleado si existe
DROP TABLE IF EXISTS empleado;
-- Crear tabla empleado
CREATE TABLE empleado(
id INT PRIMARY KEY AUTO_INCREMENT,
nombre VARCHAR(50),
puesto VARCHAR(50),
salario DOUBLE
);
-- Insertar registros de ejemplo
INSERT INTO empleado VALUES(NULL, 'Carlos', 'Desarrollador', 3200);
INSERT INTO empleado VALUES(NULL, 'Ana', 'Diseñadora', 2900);
INSERT INTO empleado VALUES(NULL, 'Luis', 'Gerente de Proyecto', 4500);
INSERT INTO empleado VALUES(NULL, 'Sofía', 'Analista de Datos', 3700);
2. Configuración del Proyecto con Maven
En el archivo pom.xml, agregue las dependencias necesarias para JUnit, el conector de MySQL, MyBatis y logging:
<dependencies>
<!-- Pruebas unitarias con JUnit -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
</dependency>
<!-- Conector para MySQL -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
<!-- Framework MyBatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.6</version>
</dependency>
<!-- Integración con Log4j para logging -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.30</version>
</dependency>
</dependencies>
3. Archivo de Configuración Principal de MyBatis
Cree el archivo mybatis-config.xml en el directorio src/main/resources con la siguiente configuración:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<environments default="desarrollo">
<environment id="desarrollo">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/ejemplo_db?characterEncoding=utf-8"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="EmpleadoMapper.xml"/>
</mappers>
</configuration>
4. Archivo de Mapeo para la Entidad Empleado
Defina el archivo EmpleadoMapper.xml en src/main/resources para asociar consultas SQL con métodos Java:
<?xml version="1.0" encoding="UTF-8"?>
<mapper namespace="EmpleadoMapper">
<!-- Consulta para obtener todos los empleados -->
<select id="obtenerTodos" resultType="com.ejemplo.modelo.Empleado">
SELECT * FROM empleado
</select>
</mapper>
5. Clase Entidad para Empleado
Cree la clase Empleado en el paquete com.ejemplo.modelo con atributos que coincidan con los campos de la tabla:
package com.ejemplo.modelo;
public class Empleado {
private Integer identificador;
private String nombreCompleto;
private String cargo;
private Double sueldo;
// Getters y setters
public Integer getIdentificador() {
return identificador;
}
public void setIdentificador(Integer identificador) {
this.identificador = identificador;
}
public String getNombreCompleto() {
return nombreCompleto;
}
public void setNombreCompleto(String nombreCompleto) {
this.nombreCompleto = nombreCompleto;
}
public String getCargo() {
return cargo;
}
public void setCargo(String cargo) {
this.cargo = cargo;
}
public Double getSueldo() {
return sueldo;
}
public void setSueldo(Double sueldo) {
this.sueldo = sueldo;
}
@Override
public String toString() {
return "Empleado [id=" + identificador + ", nombre=" + nombreCompleto + ", puesto=" + cargo + ", salario=" + sueldo + "]";
}
}
6. Implementación de la Clase de Prueba
Escriba una clase de prueba para ejecutar la consulta y mostrar los resultaods:
import com.ejemplo.modelo.Empleado;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
public class TestMybatis {
@Test
public void listarEmpleados() throws IOException {
// Cargar configuración desde el archivo XML
InputStream flujoEntrada = Resources.getResourceAsStream("mybatis-config.xml");
// Construir fábrica de sesiones SQL
SqlSessionFactory fabrica = new SqlSessionFactoryBuilder().build(flujoEntrada);
// Abrir sesión SQL
SqlSession sesion = fabrica.openSession();
// Ejecutar consulta mapeada
List<Empleado> listaEmpleados = sesion.selectList("EmpleadoMapper.obtenerTodos");
// Mostrar resultados
for (Empleado emp : listaEmpleados) {
System.out.println(emp);
}
}
}