La estructura del archivo de configuración MyBatis es la siguiente
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration><!-- 配置 -->
<properties /><!-- 属性 -->
<settings /><!-- 设置 -->
<typeAliases /><!-- 类型命名 -->
<typeHandlers /><!-- 类型处理器 -->
<objectFactory /><!-- 对象工厂 -->
<plugins /><!-- 插件 -->
<environments><!-- 配置环境 -->
<environment><!-- 环境变量 -->
<transactionManager /><!-- 事务管理器 -->
<dataSource /><!-- 数据源 -->
</environment>
</environments>
<databaseIdProvider /><!-- 数据库厂商标识 -->
<mappers /><!-- 映射器 -->
</configuration>
Los nodos de elementos en el archivo mybatis-config.xml están en un orden determinado y las posiciones de los nodos deben ordenarse de acuerdo con las posiciones anteriores; de lo contrario, se producirá un error de compilación.
El elemento de configuración es el nodo raíz de todo el archivo de configuración XML y su función es equivalente al administrador de MyBatis, en él se almacenará toda la información de configuración de MyBatis.
etiqueta de propiedades
La etiqueta de propiedades puede especificar un archivo de propiedades externo (database.properties) a través del atributo de recurso, o se puede configurar a través del subelemento de propiedades.
1. Especificar archivo
Utilice propiedades para especificar archivos externos, el código es el siguiente.
<properties resource="mybatisDemo/resources/database.properties"/>
Database.properties se utiliza para describir la configuración relacionada con la conexión de la base de datos, como el controlador de la base de datos, la URL para conectarse a la base de datos, el nombre de usuario de la base de datos, la contraseña de la base de datos, etc.
2. Configuración del subelemento de propiedades.
Configure las variables de nombre de usuario y contraseña a través de la propiedad del subelemento de propiedades y luego haga referencia a estas variables en el nodo de entornos:
<properties>
<property name="username" value="root"/>
<property name="password" value="root"/>
</properties>
Haga referencia a las variables de nombre de usuario y contraseña en el nodo de entornos.
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
También puede escribir el valor del atributo directamente en value sin usar la etiqueta de propiedades.
etiqueta de configuración
La etiqueta de configuración se utiliza para configurar el comportamiento de ejecución de MyBatis. Puede afectar profundamente el funcionamiento subyacente de MyBatis. Generalmente, no requiere mucha configuración. En la mayoría de los casos, se puede utilizar su valor predeterminado.
Hay muchos elementos de configuración en la configuración, pero en realidad no se utilizan muchos, solo podemos estudiar claramente las configuraciones de uso común. Las descripciones de los elementos de configuración comunes en los ajustes se muestran en la siguiente tabla
Elementos de configuración | efecto | Opciones de configuración | valor por defecto |
---|---|---|---|
caché habilitado | Esta configuración afecta al cambio global del caché de configuración en todos los mapeadores. | verdadero|falso | verdadero |
carga diferida habilitada | Cambio global para carga diferida. Cuando está habilitado, todos los objetos asociados se cargan de forma diferida. En una asociación específica, el estado de cambio del elemento se puede anular configurando el atributo fetchType. | verdadero|falso | FALSO |
agresivoLazyLoading | Cuando está habilitado, las llamadas a cualquier propiedad diferida harán que los objetos con propiedades diferidas se carguen por completo; de lo contrario, cada propiedad se cargará según demanda. | verdadero|falso | El valor predeterminado es verdadero antes de la versión 3.4.1 (no incluida) , falso después |
comportamiento de mapeo automático | Especifica cómo MyBatis debería asignar automáticamente columnas a campos o propiedades. NINGUNO significa cancelar el mapeo automático. PARCIAL significa que solo se asignará automáticamente y los conjuntos de resultados anidados y mapeados no están definidos. FULL asignará automáticamente conjuntos de resultados arbitrariamente complejos (ya sean anidados o no) |
NINGUNO、PARCIAL、COMPLETO | PARCIAL |
tipo de ejecutor predeterminado | Configure el ejecutor predeterminado. SIMPLE es un ejecutor normal; REUSE reutilizará declaraciones preparadas; el ejecutor BATCH reutilizará declaraciones y realizará actualizaciones por lotes | SIMPLE, REUTILIZACIÓN, LOTES | SIMPLE |
mapUnderscoreToCamelCase | Si se debe habilitar la asignación automática de reglas de nomenclatura de casos de camello, es decir, una asignación similar del nombre de columna de base de datos clásico A_COLUMN al nombre de atributo Java clásico aColumn | verdadero|falso | FALSO |
Ejemplo de configuración:
<settings>
<setting name="cacheEnabled" value="true"/>
<setting name="lazyLoadingEnabled" value="true"/>
<setting name="multipleResultSetsEnabled" value="true"/>
<setting name="useColumnLabel" value="true"/>
<setting name="useGeneratedKeys" value="false"/>
<setting name="autoMappingBehavior" value="PARTIAL"/>
<setting name="autoMappingUnknownColumnBehavior" value="WARNING"/>
<setting name="defaultExecutorType" value="SIMPLE"/>
<setting name="defaultStatementTimeout" value="25"/>
<setting name="defaultFetchSize" value="100"/>
<setting name="safeRowBoundsEnabled" value="false"/>
<setting name="mapUnderscoreToCamelCase" value="false"/>
<setting name="localCacheScope" value="SESSION"/>
<setting name="jdbcTypeForNull" value="OTHER"/>
<setting name="lazyLoadTriggerMethods" value="equals,clone,hashCode,toString"/>
</settings>
etiqueta tipoAliases
Para no especificar el nombre completo de la clase en todas partes, podemos definir un alias usando la etiqueta typeAliases
etiqueta typeHandlers
typeHandlers convierte principalmente los valores obtenidos en tipos Java de manera razonable. En typeHandler, se divide en jdbcType y javaType, donde jdbcType se usa para definir tipos de bases de datos y javaType se usa para definir tipos de Java. La función de typeHandler es realizar la conversión mutua entre jdbcType y javaType.
MyBatis admite tipos de procesamiento personalizados. Al personalizar el tipo de procesamiento, debe implementar la interfaz org.apache.ibatis.type.TypeHandler o heredar la clase org.apache.ibatis.type.BaseTypeHandle. Para obtener más información, consulte el sitio web oficial: mybatis – MyBatis 3 | Configuración
etiqueta de entornos
En la pestaña de entornos, puede configurar múltiples entornos operativos de MyBatis y asignar SQL a múltiples bases de datos diferentes.
El entorno es una subetiqueta de entornos que se utiliza para configurar un conjunto de entornos operativos para MyBatis. Es necesario especificar el ID del entorno operativo, la gestión de transacciones, la configuración de la fuente de datos y otra información relacionada.
Podemos conectarnos a múltiples bases de datos configurando múltiples etiquetas de entorno, cabe señalar que una de ellas debe designarse como entorno operativo predeterminado (especificado por defecto).
La etiqueta de entorno proporciona dos subetiquetas, transactionManager y dataSource.
etiqueta de administrador de transacciones
MyBatis admite dos administradores de transacciones, JDBC y MANAGED.
Si se utiliza un administrador de transacciones de tipo JDBC, el servidor de aplicaciones es responsable de las operaciones de administración de transacciones como confirmación, reversión, etc. Si utiliza un tipo de administrador de transacciones ADMINISTRADO, el servidor de aplicaciones es responsable de administrar el ciclo de vida de la conexión.
etiqueta de fuente de datos
Se utiliza para configurar las propiedades de conexión de la base de datos, como el nombre del controlador, la URL, el nombre de usuario y la contraseña de la base de datos que se va a conectar.
El atributo de tipo en dataSource se utiliza para especificar el tipo de fuente de datos. Existen los siguientes tres tipos.
1)Sin agrupar
UNPOOLED no tiene un grupo de conexiones de base de datos y es ineficiente. MyBatis requiere abrir y cerrar conexiones para cada operación de base de datos, es un poco lento y generalmente se usa en aplicaciones simples.
2) FIESTAS
Para el tipo de fuente de datos POOLED, MyBatis mantendrá un grupo de conexiones de base de datos. Y para cada operación de la base de datos, MyBatis utiliza conexiones del grupo de conexiones y las devuelve al grupo una vez completada la operación. Reducción del tiempo de conexión inicial y autenticación requerido para crear nuevas conexiones.
3)JNDI
Para los tipos de fuente de datos JNDI, MyBatis obtendrá la conexión de la fuente de datos JNDI.
El código de muestra para la etiqueta dataSource es el siguiente:
<dataSource type="POOLED">
<!-- MySQL数据库驱动 -->
<property name="driver" value="com.mysql.jdbc.Driver" />
<!-- 连接数据库的URL -->
<property name="url"
value="jdbc:mysql://localhost:3306/test?characterEncoding=utf8" />
<property name="username" value="root" />
<property name="password" value="root" />
</dataSource>
etiqueta de mapeador
La etiqueta mappers se utiliza para especificar la ruta del archivo de mapeo SQL de MyBatis.
mapper es una subetiqueta de mappers. El atributo de recurso en mapper se usa para especificar la ruta del archivo de mapeo SQL (ruta de recursos de clase). Por ejemplo, el nombre
del archivo de mapeo SQL es Student.xml, que se encuentra en el paquete llamado net.cky.mapper. Se puede configurar así:
<mappers>
<mapper resource="net/cky/mapper/Student.xml"/>
</mappers>