Guía de Configuración del Archivo Central de MyBatis

Estructura del archivo de configuración

El archivo central de MyBatis, comúnmente denominado mybatis-config.xml, centraliza los ajustes globales del framework. A continuación, se presenta una estructura base representativa:

<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
    <!-- Carga de archivos externos -->
    <properties resource="db_config.properties" />

    <settings>
        <setting name="mapUnderscoreToCamelCase" value="true"/>
    </settings>

    <environments default="desarrollo">
        <environment id="desarrollo">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="${db.driver}"/>
                <property name="url" value="${db.url}"/>
                <property name="username" value="${db.user}"/>
                <property name="password" value="${db.pass}"/>
            </dataSource>
        </environment>
    </environments>

    <mappers>
        <mapper resource="com/app/storage/ProductMapper.xml"/>
    </mappers>
</configuration>

Jerarquía Obligatoria de Etiquetas

MyBatis exige un orden estricto en los elementos dentro de <configuration>. Alterar este orden provocará errores de validación DTD durante el arranque:

  1. properties
  2. settings
  3. typeAliases
  4. typeHandlers
  5. objectFactory
  6. objectWrapperFactory
  7. reflectorFactory
  8. plugins
  9. environments
  10. databaseIdProvider
  11. mappers

Desglose de Componentes Principales

Etiqueta properties

Permite externalizar la configuración en archivos .properties tradicionales. Esto facilita el cambio de credenciales sin moidficar el XML principal.

<!-- Referencia a un archivo en el classpath -->
<properties resource="datasource.properties">
    <property name="backup.username" value="admin_dev"/>
</properties>

Etiqueta settings

Controla el comportamiento interno del motor de MyBatis. Uno de los ajustes más críticos es mapUnderscoreToCamelCase, que vincula automáticamente columnas de base de datos como user_name con atributos Java como userName.

<settings>
    <setting name="cacheEnabled" value="true"/>
    <setting name="lazyLoadingEnabled" value="true"/>
</settings>

Etiqueta typeAliases

Reduce la verbosidad en los archivos Mapper permitiendo usar nombres cortos en lugar de nombres de clase completamente calificados (FQCN).

  • Individual: Define un alias para una clase específica.
  • Por paquete: Escanea todas las clases de un paquete y asigna como alias el nombre simple de la clase (no distingue mayúsculas).
<typeAliases>
    <!-- Alias individual -->
    <typeAlias type="com.app.model.InventoryItem" alias="Item"/>
    <!-- Escaneo masivo -->
    <package name="com.app.entity"/>
</typeAliases>

Etiqueta environments

MyBatis permite configurar múltiples entornos (producción, prueba, desarrollo), aunque solo se puede activar uno por cada SqlSessionFactory.

  • transactionManager:
    • JDBC: Gestiona transacciones manualmente mediante el objeto Connection.
    • MANAGED: Delega la gestión de transacciones a un contenedor externo (como un servidor de aplicaciones EJB).
  • dataSource:
    • POOLED: Utiliza un pool de conexiones para mejorar el rendimiento.
    • UNPOOLED: Abre y cierra una conexión física en cada solicitud (útil para herramientas sencillas o entornos de baja carga).
    • JNDI: Recupera el DataSource desde un recurso administrado por el servidor.

Etiqueta mappers

Registra las definiciones de las sentencias SQL. Se pueden registrar archivos individuales o paquetes completos que contengan interfaces Mapper.

<mappers>
    <!-- Registro vía recurso -->
    <mapper resource="mappers/OrderMapper.xml"/>
    <!-- Registro vía interfaz -->
    <mapper class="com.app.dao.UserDao"/>
    <!-- Escaneo de todo el paquete -->
    <package name="com.app.repository"/>
</mappers>

Al utilizar el registro por paquete (package), es imperativo que tanto la interfaz Java como el archivo XML de mapeo residan en el mismo directorio dentro de la esturctura de paquetes y tengan el mismo nombre.

Etiquetas: MyBatis java SQL JDBC xml-configuration

Publicado el 9-25 03:32