Primeros Pasos con MyBatis para Persistencia de Datos

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);
        }
    }
}

Etiquetas: MyBatis java SQL maven JDBC

Publicado el 6-21 19:09