Explicación detallada del archivo de configuración global de MyBatis

Archivo de configuración global MyBatis

El archivo de configuración de MyBatis contiene información de propiedades y ajustes que afectan profundamente el comportamiento de MyBatis. Documento

La estructura de nivel superior es la siguiente:

configuración

• propiedades

• ajustes

• typeAliases denominación de tipos

• typeHandlers manejador de tipo

• fábrica de objetos objectFactory

• complementos

• entornos

• entorno variables de entorno

• administrador de transacciones transactionManager

• fuente de datos dataSource

• ID del proveedor de la base de datos databaseIdProvider

• mapeadores

propiedades

mybatis puede usar propiedades para introducir el contenido de archivos de configuración de propiedades externas

recurso: introduce recursos en la ruta de clase

url: introduzca recursos en la ruta de la red o en la ruta del disco

<properties resource="dbconfig.properties"></properties>

Si las propiedades están configuradas en más de un lugar, MyBatis se cargará en el siguiente orden:

- Las propiedades especificadas en el cuerpo del elemento de propiedades se leen primero.

- Luego lea el archivo de propiedades bajo la ruta de clase de acuerdo con el atributo de recurso en el elemento de propiedades o lea el archivo de propiedades de acuerdo con la ruta especificada por el atributo url y sobrescriba el atributo de lectura con el mismo nombre. - Finalmente lea el atributo pasado como parámetro de método y sobrescriba el atributo de lectura con el mismo nombre.

ajustes

Estas son configuraciones de ajuste extremadamente importantes en MyBatis, y cambiarán el comportamiento en tiempo de ejecución de MyBatis.

la configuración contiene muchos elementos de configuración importantes

configuración: se utiliza para configurar cada elemento de configuración

nombre: establecer el nombre del elemento

valor: el valor del elemento de configuración

mapUnderscoreToCamelCase: CamelCase llamado last_name -> lastName

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

typeAliases nombre de tipo

typeAliases: puede establecer alias para cada clase en este paquete en lotes

Los alias no distinguen entre mayúsculas y minúsculas

Cree un alias predeterminado, que es un nombre de clase simple en minúsculas

typeAlias: alias un tipo java

tipo: especifique el nombre completo de la clase del tipo que se va a alias; el alias predeterminado es la minúscula del nombre de la clase: empleado

alias: especifica un nuevo alias

paquete: alias de lote para todas las clases de un determinado paquete

nombre: especifique el nombre del paquete (un alias predeterminado (nombre de clase en minúsculas) para cada clase en el paquete actual y todos los paquetes descendientes a continuación)

Problemas existentes:

Suponga que hay una clase Empleado debajo del paquete de frijoles, y hay un subpaquete debajo del paquete de frijoles y una clase llamada Empleado. En este momento, los nombres de clase de los dos paquetes entrarán en conflicto, por lo que también puede usar anotaciones para crear alias para la clase

 @Alias("")

Empleado de clase pública {}

Vale la pena señalar que MyBatis tiene incorporados alias de tipo correspondientes para muchos tipos comunes de Java. Todos ellos no distinguen entre mayúsculas y minúsculas y no debemos utilizar alias existentes al crear alias.

ambientes

Mybatis se puede configurar con una variedad de entornos. El valor predeterminado especifica el uso de un entorno determinado, que puede lograr una conmutación rápida

entornos: configure una información de entorno específica; debe haber dos etiquetas, id representa el identificador único del entorno actual

transactionManager administrador de transacciones

tipo: el tipo de administrador de transacciones [JDBC (utilizando la configuración de confirmación y reversión de JDBC, depende de la conexión obtenida de la fuente de datos para administrar el alcance de la transacción). | ADMINISTRADO (no comprometer ni revertir una conexión, deje el contenedor gestiona la transacción El ciclo de vida completo (como el contexto del servidor de aplicaciones JEE)]

JDBC: JdbcTransactionFactory

Un administrador de transacciones personalizado puede implementar la interfaz TransactionFactory

fuente de datos dataSource

tipo: el tipo de fuente de datos [UNPOOLED (No usar grupo de conexiones) | POOLED (Usar grupo de conexiones) | JNDI (Buscar el origen de datos especificado en contenedores como EJB o servidor de aplicaciones)]

La fuente de datos personalizada implementa la interfaz DataSourceFactory

En el desarrollo real, utilizamos Spring para administrar la fuente de datos y configurar el control de transacciones para cubrir la configuración anterior.

databaseIdProvider ID del proveedor de la base de datos

databaseIdProvider: Se pueden ejecutar diferentes declaraciones de acuerdo con los diferentes proveedores de bases de datos.

tipo: tipo de base de datos DB_VENDOR

La función es obtener la identificación del proveedor de la base de datos (el controlador viene con él), mybatis puede ejecutar diferentes SQL de acuerdo con la identificación del proveedor de la base de datos

MYSQL Oracle SQL Server

valor: un alias para la identificación, conveniente para que las sentencias SQL utilicen el atributo databaseId para hacer referencia

DB_VENDOR

- Será establecido por la cadena devuelta por DatabaseMetaData # getDatabaseProductName (). Dado que esta cadena suele ser muy larga y diferentes versiones del mismo producto devolverán valores diferentes, es mejor establecer un alias de atributo para que sea

Acortar

• Las reglas de coincidencia de MyBatis son las siguientes:

- 1. Si la etiqueta databaseIdProvider no está configurada, databaseId = null

- 2. Si la etiqueta databaseIdProvider está configurada, use el nombre configurado en la etiqueta para que coincida con la información de la base de datos y establezca databaseId = el valor especificado por la configuración en la coincidencia; de lo contrario, seguirá siendo nulo

- 3. Si el databaseId no es nulo, solo encontrará la declaración SQL que configura el databaseId

- 4. MyBatis cargará todas las declaraciones sin el atributo databaseId y con el atributo databaseId que coincida con la base de datos actual. Si se encuentra la misma instrucción con databaseId y sin databaseId al mismo tiempo, esta última será descartada.

cartógrafos

mapeador: registre un mapeo sql

Registrar perfil

recurso: haga referencia al archivo de mapeo sql en la ruta de clase

url: use el archivo de mapeo sql en la ruta de la red o la ruta del disco

Interfaz de registro

clase: interfaz de la aplicación citada

1. Archivo de mapeo de interfaz. El nombre del archivo de mapeo debe ser el mismo que el nombre de la interfaz y estar ubicado en el mismo directorio.

2. No hay un archivo de mapeo sql, todo el sql está escrito en la interfaz con anotaciones.

Las anotaciones se escriben en la interfaz.

Recomendación: es más importante y complicado escribir archivos de mapeo SQL en la interfaz de Dao, no es importante y simple, puede usar anotaciones para un desarrollo rápido

paquete: registro por lotes

archivo de mapeo sql

espacio de nombres: espacio de nombres; especificado como el nombre de clase completo de la interfaz

id: identificador único

resultType: tipo de valor de retorno

# {id}: saca el valor de id del parámetro pasado

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="school.xauat.mybatis.dao.EmployeeMapper">
    <select id="getEmpById" resultType="employee" >
        select * from tbl_employee where id = #{id}
    </select>
    <select id="getEmpById" resultType="employee" databaseId="mysql">
        select * from tbl_employee where id = #{id}
    </select>
    <select id="getEmpById" resultType="employee" databaseId="oracle">
        select * from tbl_employee where id = #{id}
    </select>
</mapper>

para resumir

1. La interfaz está programando

Primitivo: Dao -----> DaoImpl

Mybatis: Mapper -----> xxMapper.xml

2. SqlSession representa una sesión con la base de datos, que debe cerrarse cuando se agote

3. SqlSession, al igual que la conexión, no es seguro para subprocesos. Debería obtener un objeto nuevo cada vez que lo use

4. La interfaz del mapeador no tiene una clase de implementación, pero Mybatis generará un objeto proxy para esta interfaz (vinculando la interfaz y xml)

EmployeeMapper empMapper = SqlSession.getMapper (Employee.class);

5. Dos archivos de configuración importantes

Archivo de configuración global de Mybatis; contiene información del grupo de conexiones de la base de datos, información del administrador de transacciones, información del funcionamiento del sistema

archivo de mapeo sql: guarda la información de mapeo de cada declaración SQL

Extraer sql

Supongo que te gusta

Origin blog.csdn.net/qq_45796208/article/details/110508432
Recomendado
Clasificación