(4) Mybatis de la entrada a los alias de suelo, archivos de configuración y la introducción del mapeador

Este es el cuarto de la serie mybatis. Si no ha leído las sugerencias anteriores, primero vaya a la cuenta pública [Java Tsuka Fox] para ver los artículos anteriores, lo cual es conveniente para comprender y comprender.

Alias

¿Por qué necesitas usar alias?

Hay muchos lugares en el archivo xml que requieren el nombre de clase completo de la clase, que es muy detallado. Para reducir nuestra carga de trabajo y complejidad, mybatis nos apoya para dar un alias a una determinada clase, y luego podemos acceder a la tipo especificado a través del alias.

Uso de alias

Antes de usar un alias, debe registrar un alias en mybatis, y hay tres formas de registrar un alias.

Camino 1

Utilice el elemento typeAlias ​​para registrarse

como sigue:

<typeAliases>
    <typeAlias type="完整的类型名称" alias="别名" />
</typeAliases>

El elemento typeAliases puede contener varios subelementos typeAlias. Cada typeAlias ​​puede registrar un alias para un tipo. Hay dos atributos que deben especificarse:

  • tipo: nombre de tipo completo
  • alias: alias

Camino 2

Registro de lotes a través del elemento packege

Arriba podemos registrar un alias a través del elemento typeAlias. Si tenemos muchas clases para registrar, necesitamos escribir mucha configuración de typeAlias.

Mybatis nos proporciona una forma de registrar alias en lotes, a través del elemento del paquete, de la siguiente manera:

<typeAliases>
    <package name="需要扫描的包"/>
</typeAliases>

Esto también está bajo el elemento typeAliases, pero esta vez se usa el elemento package. El paquete tiene un atributo de nombre, que puede especificar un nombre de paquete. Mybatis cargará este paquete y todos los tipos en subpaquetes, y registrará alias y nombres de alias para estos tipos. Por defecto, el nombre de la clase estará en minúsculas, por ejemplo , el alias de UserModel es usermodel

Camino 3

Paquete combinado con @Alias ​​para registrarse en lotes y asignar alias

En el método 2, los alias se pueden registrar en lotes a través de paquetes, pero es probable que aparezcan varias clases con el mismo nombre de clase.

Entonces, al registrar alias en lotes en modo paquete, podemos agregar una anotación @Alias ​​a la clase para asignar alias a esta clase:

@Alias("user")
public class UserModel {
}

Cuando mybatis escanea la clase, encuentra que hay una anotación de Alias ​​en la clase y tomará el valor de esta anotación como el alias. Si no hay tal anotación, la minúscula del nombre de la clase se utilizará como alias, como en el método 2.

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

Mybatis proporciona alias para muchos tipos de forma predeterminada

El principio de alias

Mybatis nos permite registrar un alias para un tipo determinado. Se establecerá una relación de mapeo entre el alias y el tipo. Esta relación de mapeo se almacena en un objeto de mapa. La clave es el nombre del alias y el valor es el tipo específico. .Cuando accedemos a un determinado tipo por un nombre En el caso de un tipo, mybatis busca primero en el mapa del alias y mapeo de tipos según la clave según el nombre del tipo. Si encuentra el tipo correspondiente, directamente devuelve el tipo correspondiente. Si no se encuentra, utilizará este nombre como el nombre completo de la clase para resolverlo. Para el objeto Class, si este tipo no es reconocido en estos dos pasos de análisis, se reportará un error.

Sugerencias para usar alias

La forma de alias puede simplificar la escritura de tipos. Originalmente una larga lista de objetos UserModel, ahora solo necesita escribir un usuario, lo cual es muy conveniente y conciso de usar. Pero en términos de mantenimiento, no es muy conveniente.

Por lo tanto, se recomienda que las clases personalizadas no usen alias tanto como sea posible, y necesitamos conocer algunos de los alias incorporados en mybatis.

Archivo de configuración de atributos detallado

La configuración de la conexión a la base de datos se escribe directamente en el archivo de configuración global de mybatis, pero después de conectarse, es posible que se requieran algunos cambios para cambiar la base de datos, que no está muy optimizada, por lo que generalmente agregamos información de configuración que necesita operación y mantenimiento. (como: db Configuration, mail configuration, redis configuration, etc.) se colocan en un archivo de configuración de propiedades, y luego, cuando están en línea, solo se requiere operación y mantenimiento para modificar este archivo de configuración, y no es necesario modificar el código -Archivos relacionados en absoluto.

Mybatis también nos apoya para configurar alguna información de propiedad a través de archivos de propiedades externos.

Hay 3 formas de configurar la información de atributos en mybatis.

Método 1: definir propiedades en el elemento de propiedad

Definición de atributo

La información de propiedad está definida por el elemento de propiedades en el archivo de configuración global mybatis, de la siguiente manera:

<configuration>
    <properties>
        <property name="属性名称" value="属性对应的值"/>
    </properties>
</configuration>

La información de la propiedad se configura a través del elemento de propiedad anterior:

  • nombre: el nombre del atributo
  • valor: el valor del atributo.

Tal como:

<property name="jdbc.driver" value="com.mysql.jdbc.Driver"/>
Utilice $ {nombre de la propiedad} para hacer referencia al valor de la propiedad

El atributo ha sido definido, podemos referirnos al valor del atributo definido a través de $ {nombre del atributo}, como por ejemplo:

<property name="driver" value="${jdbc.driver}"/>

Método 2: archivo de configuración de importación de recursos

En el método 1, nuestro archivo de configuración todavía está escrito en el archivo de configuración global.Mybatis admite la importación del archivo de configuración desde el exterior, y el archivo de configuración puede escribirse en otros archivos externos y luego importarse.

Importar el archivo de configuración en la ruta de clases
<configuration>
    <properties resource="配置文件路径"/>
</configuration>

El elemento de propiedades tiene un atributo de recurso, que es la ruta del archivo de configuración en relación con las clases. El archivo de configuración generalmente se coloca en el directorio src / main / resource. Los archivos de este directorio se colocarán en la ruta de clases después de la compilación .

Método 3: importar archivos de configuración remota por URL

Mybatis también proporciona una forma de importar archivos de configuración remota, de la siguiente manera:

<properties url="远程配置文件的路径" />

Esta vez se sigue utilizando el elemento de propiedades, pero se utiliza el atributo url, como por ejemplo:

<properties url="http://itsoku.com/properties/config.properties" />

Recomendaciones para usar archivos de configuración de propiedades

Hablamos de 3 métodos arriba. El segundo método es un método más común. Se recomienda que utilice el segundo método para introducir archivos de configuración de recursos externos.

Si hemos escrito las tres formas, ¿cómo irá mybatis?

  • Cuando existen tanto el modo 1 como el modo 2, la configuración del modo 2 sobrescribirá la configuración del modo 1.
  • Si existen tanto el método 2 como el método 3, el método 3 no será válido

Mybatis primero leerá la configuración del modo 1, y luego leerá la configuración del modo 2 o el modo 3, y sobrescribirá la misma configuración en 1.

3 formas de introducir mapper en mybatis

El archivo mapper xml es muy importante. El sql que escribimos está básicamente en él. Cuando se usa mybatis para desarrollar un proyecto, la mayor parte del código relacionado con mybatis es escribir sql, básicamente se trata de mapper xml.

El mapeador xml preparado debe ser conocido por mybatis, ¿cómo se lo comunicamos a mybatis?

Se puede importar a través del archivo de configuración global mybatis, hay tres formas principales.

Método 1: utilice el atributo de recurso del asignador para registrar el archivo xml del asignador

En la actualidad, los diversos ejemplos en los que estamos involucrados se adoptan de esta manera, utilizando los siguientes métodos para introducir:

<mappers>
    <mapper resource="Mapper xml的路径(相对于classes的路径)"/>
</mappers>

Precauciones

  • En circunstancias normales, crearemos una interfaz Mapper con el mismo nombre que el espacio de nombres en Mapper xml, y la interfaz Mapper estará vinculada al archivo Mapper xml
  • Cuando mybatis carga el mapper xml, encontrará la interfaz Mapper correspondiente al espacio de nombres, y luego se registra, podemos acceder a las operaciones específicas en el Mapper xml a través de la interfaz Mapper
  • La cooperación de Mapper xml y la interfaz de Mapper es una práctica relativamente común, y se recomienda encarecidamente que todos la utilicen.

Método 2: utilice el atributo de clase del asignador para registrar la interfaz del asignador

Presentar la interfaz Mapper

La interfaz del asignador se introduce en el archivo de configuración global mybatis de la siguiente manera:

<mappers>
        <mapper class="接口的完整类名" />
</mappers>

En este caso, mybais cargará la interfaz correspondiente a la clase y luego cargará el archivo xml con el mismo nombre en el mismo directorio que esta interfaz.

Tal como:

<mappers>
        <mapper class="zhonghu.chat01.demo1.UserMapper" />
</mappers>

Con la redacción anterior, mybatis registrará automáticamente la interfaz de UserMapper y también buscará los siguientes archivos:

zhonghu.chat01.demo1.UserMapper.xml

Se estima que verá esta forma de escribir cuando desarrolle proyectos en el futuro La interfaz Mapper y el archivo xml Mapper se colocan en el mismo paquete.

Método 3: utilice el elemento del paquete para registrar las interfaces de Mapper en lotes

Interfaz de mapeador de registros por lotes

Los dos métodos anteriores son para registrar mapeadores uno por uno Si escribimos muchos mapeadores, ¿podemos registrarnos en lotes?

Mybatis proporciona una forma de registrar paquetes de escaneo en lotes. Es necesario agregar la siguiente configuración al archivo de configuración global de mybatis:

<mappers>
    <package name="需要扫描的包" />
</mappers>

mybatis escaneará todas las interfaces en el paquete y subpaquetes especificados por el atributo name en el elemento del paquete, y lo registrará como una interfaz Mapper, por lo que generalmente crearemos un paquete mapper con la interfaz Mapper y el archivo xml Mapper de la misma. nombre.

Preste atención

El método 3 escaneará todas las interfaces en el paquete especificado y registrará estas interfaces como interfaces Mapper. Siempre que el tipo escaneado sea una interfaz, se registrará. Por lo tanto, generalmente solo colocamos la interfaz Mapper en el paquete especificado para evitar almacenar alguna clase o interfaz irrelevante.

Acerca de la configuración y el código fuente

Algunas de las configuraciones explicadas en esta ocasión están configuradas en el archivo de configuración global mybatis, la configuración de estos elementos está en orden, los elementos específicos se definen en el siguiente archivo dtd:

http://mybatis.org/dtd/mybatis-3-config.dtd

Le sugiero que eche un vistazo a este archivo de configuración dtd.

para resumir

  1. Domine las 3 formas de registro de alias, se recomienda que utilice alias personalizados lo menos posible
  2. Domina 3 formas de configuración de atributos
  3. Domina las 3 formas de registro de mapeadores y los puntos a los que prestar atención

Por fin

  • Si sientes que eres recompensado después de leerlo, espero que le prestes atención. Por cierto, dame un pulgar hacia arriba. Esta será la mayor motivación para mi actualización. Gracias por tu apoyo.
  • Bienvenidos a todos para que presten atención a mi cuenta pública [Java Fox], enfocándome en los conocimientos básicos de Java y la computadora, prometo dejarles obtener algo después de leerlo, si no me creen, péguenme
  • Busque la conexión triple con un clic: me gusta, reenviar y mirar.
  • Si tiene diferentes opiniones o sugerencias después de leer, por favor comente y comparta con nosotros. Gracias por su apoyo y cariño.

——Soy Chuhu, y amo la programación tanto como a ti.

Bienvenido a seguir la cuenta pública "Java Fox" para conocer las últimas noticias.

Supongo que te gusta

Origin blog.csdn.net/issunmingzhi/article/details/113776783
Recomendado
Clasificación