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