Introducción detallada a las distintas etapas de mybatis
Por ejemplo, usamos la etiqueta de propiedades para presentar el archivo de configuración jdbc. ¿Cuáles son los beneficios de introducir jdbc? , puede administrar el contenido
de manera uniforme en el archivo de configuración sin tener que cambiarlo en muchos archivos, y el contenido relacionado con la conexión de la base de datos está codificado en el archivo de configuración principal. Codificado, por lo que utilizamos el reemplazo del archivo de configuración. ¡Es bueno!
Te habrás dado cuenta de que el prefijo jdbc se utiliza para distinguirlas de otras variables. (No es difícil saber por el nombre que se trata de datos relacionados con jdbc, por lo que no se confundirá con la variable del mismo nombre, porque la variable de nombre de usuario no solo se puede usar para conexiones de bases de datos.
Puedes ver cómo está escrito en lo anterior:
El siguiente párrafo se utiliza para establecer el nombre de la categoría:
Entonces la pregunta es, ¿por qué hay un nombre de categoría /p>
Debido a que se usa cada vez en el archivo de mapeo, obviamente es un poco problemático escribir el nombre completo de la clase, como en este ejemplo:
Hay muchas asignaciones en un proyecto, por lo que. Los nombres de clases son útiles por conveniencia. Esto resulta útil. Puede escribir clases de interfaz y los alias correspondientes en el archivo de configuración principal.
De esta manera puede escribir Usuario directamente en el espacio de nombres del archivo de mapeo (sin requisitos). según el tamaño o el usuario, de hecho, puede ser más simple que esto, y también es muy común en la escritura de desarrollo real
Es decir, puede escribir el paquete completo como un alias en forma de clase; nombre (no distingue entre mayúsculas y minúsculas), o escrito como un alias en forma de nombre de clase (no distingue entre mayúsculas y minúsculas), si no escribe una propiedad, el valor predeterminado es una propiedad de alias. Esto es mucho más simple, solo necesitamos una línea de. código, puede escribir directamente el nombre de clase correspondiente en el espacio de nombres de todos los archivos de mapeo
Presentación del archivo de configuración principal
Lo primero a considerar es la introducción de los archivos de mapeo aquí. Estamos en una La base de datos de un proyecto normal se compone de muchas tablas, por lo que cada tabla corresponde a una interfaz de mapeador.
Lo primero a considerar aquí es el archivo de mapeo. La base de datos normal de nuestro proyecto es. compuesto por muchas tablas. Cada tabla corresponde a una interfaz de mapeo y cada interfaz corresponde a un archivo de mapeo.
Si escribe una declaración de consulta en el archivo de mapeo pero accidentalmente olvida configurar el tipo de retorno, la consola. lanzará una excepción, verá la siguiente descripción:
Lo más probable es que no se haya especificado ni el tipo de resultado ni el mapa de resultados.
Aquí hay una forma de especificar el tipo de retorno: resultType. y resultMap <. /p>
Diferencia:
La etiqueta de consulta debe especificar resultType o resultMap
com.kobedu.mybatis Dos métodos para obtener parámetros: ${} y #{}
Lo anterior está escrito usando #{}, que es equivalente al marcador de posición en jdbc local. Ya se mencionó anteriormente, por lo que no diré más. {} nombre de variable. Puede ser cualquier especificación de nombre de usuario, lo cual obviamente es bueno, pero aaaa tiene razón porque es solo para marcadores de posición.
También está el nombre de variable #{{}, que puede ser cualquier nombre de usuario; especificación.
También hay un problema de "comillas simples" al usar ${}, porque ${} es empalme de caracteres, ¡así que debes prestar atención!
Pasar más de un parámetro
En el código de prueba, al pasar dos parámetros de nombre de usuario y contraseña, pero en el código anterior (parte del código en el archivo de mapeo), ejecute Failure (falló el análisis de la declaración SQL)
Error informado:
Motivo: org ..apache.ibatis.binding.BindingException: parámetro 'nombre de usuario' no encontrado. Los parámetros disponibles son [arg1, arg0, param1, param2]
No es difícil ver que nuestros parámetros están en diferentes posiciones en el mensaje de error. No es difícil descubrir que nuestros parámetros en realidad no son aceptados por el archivo de mapeo y se pueden obtener a través de [arg1, arg0, param1, param2]. Mybatis coloca los parámetros en el contenedor de mapeo estableciendo arg0 y agr1....
Obtener parámetros (también incluye param1, param2...)
Modificaciones al código anterior:
Nota: Cuando utilice ${}, debe agregue '' manualmente para un acceso correcto ya que se trata de concatenación de cadenas
¡El resultado de la modificación es muy impresionante!
Usuario{id=6, nombre de usuario='wangcai', edad=20, contraseña='cwlz'}
Se puede acceder al valor correspondiente directamente a través de la clave (se accede a través de su propios datos, la tabla anterior es el método de mapeo proporcionado por mybatis de forma predeterminada y el método de extracción de dedo por defecto de mybatis) arg0, arg2...)
Cuando sea necesario pasar varios parámetros, colóquelos en un contenedor de mapas, y luego pasa al método de mapa correspondiente (simulando el método de mybatis, puede acceder directamente al valor a través de la clave en la declaración SQL. El código es el siguiente:
Parte del código). en el archivo de mapeo:
Pass La clave accede al valor directamente. Nota: ¡No olvide las comillas simples cuando use ${}! ! ! !
¿Cómo resolver el problema cuando los parámetros se pasan como objetos de entidad?
¡Simplemente acceda como nombre de propiedad a través de #{}!
Por lo tanto, el código debe escribirse de forma estandarizada para reducir dichos errores. ! !
Tenga en cuenta:
Etiqueta
Si la condición después de dónde está vacía, no es necesario escribir la etiqueta completa. 1 = 1 es un detalle, porque cuando donde esté vacío, se convertirá en select * de t_user donde
Obviamente, esta declaración SQL es problemática, hay otra situación, cuando Cuando el nombre de usuario esté vacío, se convertirá seleccione * de t_user donde y edad=#{age}
Esto también está mal.
dónde Cuando hay contenido en la etiqueta dónde, la palabra clave dónde se generará automáticamente y se eliminará el contenido redundante o anterior. Cuando no hay contenido en la etiqueta donde, la etiqueta donde no tiene ningún efecto, es decir, no genera palabras clave. Nota: Al escribir una condición, no puede agregar y o después de la condición.
Si la siguiente declaración no es válida, mybatis no la eliminará.
Uso equivalente de if else
Un ejemplo típico: gt es cuando necesitamos eliminar cierto contenido en lotes (los parámetros se pasan en forma de matriz)
p >fragmento de sql: en nuestra declaración de consulta, no necesitamos escribir siempre * en la declaración de consulta desarrollada real, porque necesitamos buscar bajo demanda, no tenemos que consultar los innecesarios; cuando normalmente consultamos mucho. Por lo general, podemos consultar varias veces en el campo
Dentro del fragmento SQL, ¡puede consultarlo directamente para realizar consultas cuando sea necesario!
El almacenamiento en caché es un término que hemos escuchado muchas veces. Es un mecanismo para almacenar en caché las páginas web a las que se accede durante la fase de red.
La consulta SQL actual también tiene un mecanismo de almacenamiento en caché. Hay un caché de primer nivel. El caché de primer nivel está habilitado de forma predeterminada. Cuando el alcance del caché de primer nivel es sqlSession, lo almacenaremos en caché. los datos consultados primero. Si la próxima vez tiene la misma consulta, no tendrá que acceder a la base de datos nuevamente. ¡Puede recuperarlos directamente del caché! ! ! !
Borrar manualmente la sesión SQL almacenada en caché. clearCache();
La etiqueta de caché agregada en el archivo de configuración del asignador se puede configurar con múltiples atributos:
La ingeniería inversa no es difícil de entender. Solíamos pasar de clases de entidad a. bases de datos, y la clase inversa es la clase de entidad generada a través de la tabla de la base de datos,