Introducción a mybatis
MyBatis es un proyecto de código abierto de Apache. En 2010, este proyecto se trasladó de Apache Software Foundation a Google Code y pasó a llamarse MyBatis. Admite excelentes marcos de capa de persistencia para consultas SQL ordinarias, procedimientos almacenados y mapeo avanzado. MyBatis elimina la configuración manual de casi todos los códigos y parámetros JDBC y busca conjuntos de resultados. MyBatis utiliza XML o anotaciones simples para la configuración y el mapeo original para mapear interfaces y Pojos de Java (objetos Java Old Old) en los registros en la base de datos.
Introducción al Interceptor MyBatis
MyBatis proporciona una función de complemento. Aunque se llama complemento, en realidad es una función de interceptor. MyBatis le permite interceptar llamadas en cierto punto durante la ejecución de una declaración mapeada. MyBatis nos proporciona una interfaz de interceptor, al implementar esta interfaz, podemos definir nuestro propio interceptor.
MyBatis llama a cuatro tipos de métodos por defecto:
1.Executor (actualización, consulta, estallidos de descarga, confirmación, reversión, getTransaction, Close, IsClose)
2. ParameterHandler (getParameteroBject, setParameters)
3.Resultsethandler (HandLerEdSetsets, HandleOutputParameters)
4.StatementHandler (preparar, parametrizar, lote, actualización, consulta)
Los anteriores son todos todos los métodos de configuración. Estos métodos se ejecutarán en una operación de MyBatis (agregar, eliminar, modificar y consultar). El orden de ejecución es ejecutor, parámetrohandler, resultados methandler y DeclaryHandler.
La definición de una interfaz es:
Entre estos tres métodos, el complemento se utiliza para la construcción del procesador, Intercept se utiliza para manejar clases de proxy y configuraciones de propiedad del interceptor de términos SetProperties.
La clase de complemento implementa la interfaz InvocationHandler y devuelve la clase dinámica de proxy de un JDK. Para el método de envoltura del complemento:
Determine si el objeto objetivo actual tiene una interfaz que necesita ser interceptada. Si no, devuelve el objeto de destino en sí, y si lo hay, devuelve un objeto proxy.
El InvocationHandler del objeto proxy es un complemento. Cuando el objeto de destino ejecuta el método de la interfaz, si se ejecuta a través del objeto proxy, se llamará al método de invocación del InvocationHandler, que es el método Invoke del complemento:
Si el método ejecutado actualmente es un método definido que debe ser interceptado, el objeto de destino, el método a ejecutar y los parámetros del método se encapsulan en un objeto de invocación, y la invocación encapsulada se pasa como parámetros al método de intercepción del interceptor actual. Si no es necesario interceptar, el método actual se llama directamente.
Para el método getSignaturMap
GetSignatuMap primero obtendrá la anotación de intercepción de la intercepción, atravesando la transversión para obtener el atributo de tipo, y luego obtendrá el método con el atributo de método y el atributo ARG basado en este tipo, y finalmente devuelve un mapa con la tecla de tipo y el valor del valor <Método>. Ejemplos: Filtrar el método de actualización de Ejecutor.class producirá una clave como Executro y un valor como instancia de método, con parámetros correspondientes a MappedStatement and Method Methods.
Configuración del interceptor: