[Serie MyBatis ④] Archivo de configuración principal

Tabla de contenido

1. Introducción

2、DTD

3 、 controladores de tipo

3.1, tipo de procesador predeterminado

3.2, procesador de tipo personalizado

4 、 complementos


⭐Serie MyBatis ①: agregar, eliminar, modificar y verificar

⭐MyBatis Series②: dos métodos de desarrollo de Dao

⭐Serie MyBatis③: SQL dinámico

1. Introducción

El archivo de configuración principal de MyBatis (generalmente llamado mybatis-config.xml) es uno de los archivos importantes para configurar el marco MyBatis.

Define configuraciones globales, incluida información de conexión de bases de datos, configuraciones de mapeo relacional de objetos (ORM), configuración de complementos, controladores de tipos y más.

La documentación dice:

Esta parte se utiliza para declarar la definición del tipo de documento (DOCTYPE) del archivo de configuración principal de MyBatis. Le dice al analizador XML cómo interpretar este archivo XML. El contenido se explica de la siguiente manera:

  1. <!DOCTYPE configuración : esta parte indica que se trata de una declaración de tipo de documento, que especifica el tipo de documento como configuración , que es el archivo de configuración principal de MyBatis.
  2. PUBLIC "-//mybatis.org//DTD Config 3.0//EN" : Este es un identificador que se utiliza para especificar el identificador público (Identificador público) del tipo de documento. Aquí, -//mybatis.org//DTD Config 3.0//EN especifica la versión y el idioma del archivo de configuración MyBatis.
  3. "http://mybatis.org/dtd/mybatis-3-config.dtd" : Este es el identificador del sistema (System Identifier) ​​definido por el tipo de documento, que especifica la ubicación del archivo DTD. En este ejemplo, apunta a la URL del archivo DTD (Definición de tipo de documento) del archivo de configuración MyBatis.

En conjunto, esta declaración de tipo de documento le dice al analizador XML cómo interpretar el archivo XML, así como la versión y ubicación de la especificación DTD que sigue el archivo XML. Aquí, especifica que la versión del archivo de configuración central de MyBatis es 3.0 y utiliza el archivo DTD oficial proporcionado por MyBatis para el análisis.

2 、DTD

Este archivo XML es un documento DTD (Definición de tipo de documento), que se utiliza para definir la estructura del archivo de configuración principal y las especificaciones de elementos de MyBatis. Este archivo DTD describe los elementos, atributos y relaciones entre ellos que se pueden utilizar en los archivos de configuración de MyBatis.

Los comentarios y etiquetas de este archivo DTD explican el significado de cada elemento, atributos y subelementos.

elemento

describir

configuración

El elemento raíz representa la información de configuración de MyBatis, incluida la conexión a la base de datos, la configuración del mapeador, etc.

proveedor de ID de base de datos

El elemento del proveedor de ID de la base de datos se utiliza para proporcionar diferentes configuraciones para diferentes bases de datos.

propiedades

El elemento de propiedades, utilizado para establecer propiedades globales, se puede cargar desde recursos externos.

propiedad

El elemento de atributo, con atributos de nombre y valor, se utiliza para definir el nombre y el valor del atributo.

ajustes

Elemento de configuración, utilizado para definir la configuración global.

configuración

Un único elemento de configuración, con atributos de nombre y valor.

tipoAlias

El elemento de tipo alias se utiliza para definir un alias para una clase Java.

tipoAlias

Elemento de alias de tipo, con atributos de tipo y alias, utilizado para definir el alias de tipo.

manejadores de tipos

Elemento de procesador de tipo, utilizado para procesadores de tipo personalizado.

tipoHandler

Elemento controlador de tipos, con atributos javaType, jdbcType y controlador.

fábrica de objetos

Elementos de fábrica de objetos para personalizar cómo se crean los objetos.

objetoWrapperFactory

Elemento de fábrica de envoltorios de objetos para envoltorios de objetos personalizados.

reflectorFábrica

Elemento de fábrica de reflectores para personalizar reflectores.

complementos

Elemento de complemento para agregar interceptores de complementos.

enchufar

El elemento de complemento, con el atributo interceptor, especifica el nombre de clase del interceptor de complemento.

entornos

Un elemento del entorno de base de datos que define un administrador de transacciones y una fuente de datos.

ambiente

El elemento de entorno, con un atributo id, se utiliza para definir un entorno de base de datos.

administrador de transacciones

Un elemento del administrador de transacciones que define un tipo de administrador de transacciones.

fuente de datos

Elemento de fuente de datos, utilizado para definir el tipo de fuente de datos.

mapeadores

Un elemento de mapeador para definir una configuración de mapeador.

mapeador

Un elemento asignador, con atributos de recurso, URL y clase, que se utiliza para definir la ubicación del archivo asignador.

paquete

Elemento de paquete, utilizado para definir un paquete Java.

Este archivo DTD describe los diversos elementos y atributos que se pueden usar en el archivo de configuración principal de MyBatis, lo que ayuda a los desarrolladores a escribir archivos de configuración que cumplan con la especificación.

3 、 controladores de tipos

typeHandlers es un elemento en el archivo de configuración MyBatis, que se utiliza para personalizar la conversión entre tipos de bases de datos y Java.

Puede haber una discrepancia de tipos entre los tipos de base de datos y Java, como asignar un tipo numérico en la base de datos a un tipo de enumeración en Java, o lidiar con conversiones de fecha y hora, etc.

typeHandlers le permite escribir controladores de tipos personalizados para garantizar la conversión correcta de datos entre la base de datos y Java.

3.1 , tipo de procesador predeterminado

La siguiente tabla describe algunos controladores de tipos predeterminados:

controlador de tipo

El tipo de Java correspondiente

Tipo JDBC correspondiente

Controlador de tipo booleano

Booleano

BOOLEAN compatible con bases de datos

Controlador de tipo de byte

Byte

compatible con base de datos NUMERIC o BYTE

Controlador de tipo corto

Corto

Base de datos compatible NUMÉRICO o ENTERO CORTO

Controlador de tipo entero

Entero

compatible con base de datos NUMÉRICO o INTEGER

Controlador de tipo largo

Largo

Base de datos compatible NUMÉRICO o ENTERO LARGO

Controlador de tipo de cadena

Cadena

VARCHAR, CHAR

Manejador de tipo de fecha

Fecha

FECHA, MARCA DE TIEMPO

EnumTypeHandler

enumeración

VARCHAR

Controlador de tipo de matriz

Formación

FORMACIÓN

Controlador de tipo de mapa

Mapa

MAPA

Controlador de tipo de objeto

Objeto

VARIOS

3.2 、 Procesador de tipo personalizado

Es posible anular los controladores de tipos o crear los suyos propios para manejar tipos no compatibles o no estándar.

El método específico es:

Implemente la interfaz org.apache.ibatis.type.TypeHandler o herede una clase muy conveniente org.apache.ibatis.type.BaseTypeHandler , luego

Luego, opcionalmente, se puede asignar a un tipo JDBC.

Por ejemplo, el requisito: un tipo de datos de fecha en Java, quiero almacenarlo en la base de datos como una cantidad de milisegundos desde 1970 hasta el presente y convertirlo en una fecha de Java cuando se saque, es decir, la diferencia entre la fecha java y el valor de milisegundos varchar de la base de datos cambia entre .

Pasos de desarrollo:

① Defina la clase de herencia de la clase de conversión BaseTypeHandler<T>

② Anule 4 métodos no implementados:

Entre ellos , setNonNullParameter es el método de devolución de llamada para que el programa Java establezca datos en la base de datos, y getNullableResult es el método para convertir el tipo de cadena de MySQL al tipo Type de Java durante la consulta.

③ Regístrese en el archivo de configuración principal de MyBatis

④ Pruebe si la conversión es correcta

La siguiente es la implementación del código:

Escriba la clase de conversión, herede BaseTypeHandler <T> y reescriba el método:

package com.xzl.handle;

import org.apache.ibatis.type.BaseTypeHandler;
import org.apache.ibatis.type.JdbcType;

import java.sql.CallableStatement;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Date;

/**
 * @author 逐梦苍穹
 * @date 2023/8/24 23:30
 * setNonNullParameter为java程序设置数据到数据库的回调方法
 * getNullableResult为查询时 mysql的字符串类型转换成 java的Type类型的方法
 * i 是一个整数,表示要设置的参数在 SQL 语句中的位置。
 * s 表示数据库列名
 */
public class DateTypeHandle extends BaseTypeHandler<Date> {
    @Override
    public void setNonNullParameter(PreparedStatement preparedStatement, int i, Date date, JdbcType jdbcType) throws SQLException {
        // 在预处理语句中设置非空参数
        // 将 Date 类型的数据转换为 long 类型的时间戳,并以字符串形式设置到 PreparedStatement 中
        preparedStatement.setString(i, date.getTime() + "");
    }

    @Override
    public Date getNullableResult(ResultSet resultSet, String s) throws SQLException {
        // 从结果集中获取可空结果(根据列名)
        // 将结果集中的 long 类型的时间戳转换为 Date 类型并返回
        return new Date(resultSet.getLong(s));
    }

    @Override
    public Date getNullableResult(ResultSet resultSet, int i) throws SQLException {
        // 从结果集中获取可空结果(根据列索引)
        // 将结果集中的 long 类型的时间戳转换为 Date 类型并返回
        return new Date(resultSet.getLong(i));
    }

    @Override
    public Date getNullableResult(CallableStatement callableStatement, int i) throws SQLException {
        // 从存储过程的调用结果中获取可空结果
        // 直接获取存储过程的 Date 类型数据并返回
        return callableStatement.getDate(i);
    }
}

Configurar mybatis-config.xml

En este paso de configuración, preste atención al orden de posición de esta etiqueta en relación con otras etiquetas. Si la posición relativa de la etiqueta es incorrecta, aparecerá:

③Se debe agregar el formulario de la base de datos y la clase de entidad:

Resultados de la prueba:

El primero es probar la marca de tiempo almacenada en la base de datos:

El resultado es el siguiente:

Luego, la prueba toma el valor de milisegundos de tiempo en la base de datos y lo convierte en un objeto de clase de fecha normal:

El resultado es el siguiente:

4. complementos _

MyBatis puede utilizar complementos de terceros para ampliar sus funciones. El asistente de paginación PageHelper encapsula las complejas operaciones de paginación y puede obtener datos relevantes de la paginación de una manera sencilla.

Pasos de desarrollo:

Importar las coordenadas del PageHelper general

<!-- 分页助手 -->
<dependency>
  <groupId>com.github.pagehelper</groupId>
  <artifactId>pagehelper</artifactId>
  <version>3.7.5</version>
</dependency>
<!-- sql解析 -->
<dependency>
  <groupId>com.github.jsqlparser</groupId>
  <artifactId>jsqlparser</artifactId>
  <version>0.9.1</version>
</dependency>

Configure el complemento PageHelper en el archivo de configuración principal de mybatis

③Prueba de adquisición de datos de paginación

Código clave: PageHelper.startPage(1,3); indica que actualmente se encuentra en la primera página y muestra tres datos   

como sigue:

Obtenga otros parámetros relacionados con la paginación:

El código de prueba es el siguiente:

Supongo que te gusta

Origin blog.csdn.net/qq_60735796/article/details/132487094
Recomendado
Clasificación