1. Métodos de mapeo soportados por mybatis
Los métodos de mapeo soportados por mybatis incluyen archivos mapper.xml basados en XML y clases de interfaz mapper basadas en Java. Hay cuatro anotaciones principales de métodos de interfaz: @Insert, @Delete, @Update y @Select
2. Cómo mapear usando anotaciones de interfaz
Los siguientes experimentos se basan todos en tablas t_user y están estructurados de la siguiente manera:
2.1 Aumento @Insert
Básicamente hay tres esquemas para esto, a saber: designación manual (capa de aplicación), clave primaria auto-añadida (tabla única de capa de datos) y clave primaria de selección (tabla múltiple de capa de datos).
1. Especificar manualmente la clave primaria en la capa de aplicación
El método manual no trata la clave primaria de forma diferente y le da un valor a la clave primaria cuando la capa de aplicación genera el objeto antes de la inserción, lo cual no difiere del campo normal al insertarse.
En el ejemplo anterior, mybatis no sabe cuál campo es la clave primaria e id es el campo de clave primaria, pero no se trata de forma diferente.
Ten en cuenta que el método #{username} es usar User como contexto actual, de modo que al acceder a los atributos de User, puedes escribir directamente el nombre del atributo.
2. La tabla añade la clave primaria
La clave primaria autoincrementante corresponde al relleno de la clave primaria en la configuración XML, un ejemplo sencillo:
Usa Option para corresponder a las propiedades del set de etiquetas select en XML, userGeneratordKeys para indicar que quieres usar una clave primaria auto-incrementante, y keyProperty para especificar el nombre del campo de la clave primaria.
La clave primaria autoincrementante utiliza las características autoincrementantes de la base de datos subyacente.
3. Seleccionar la clave primaria
Selecciona la clave primaria para generar un valor de la capa de datos y usa este valor como valor de la clave primaria.
2.2 Eliminar @Delete
Al eliminar, simplemente escribe la condición en el valor de la anotación @Delete y devuelve un tipo int como el número de registros que han sido eliminados con éxito.
2.3 Cambio @Update
Al modificar, simplemente escribe la sentencia SQL en el valor del @Update y devuelves un tipo int para indicar el número de líneas de registro modificadas.
2.4 Comprobar @Select
Consultar es un poco más complicado, porque la consulta implica cómo establecer los campos encontrados en el objeto, y normalmente hay tres formas:
1. Especificar manualmente un alias en la instrucción SQL para que coincida
Al escribir sentencias SQL, asigna manualmente un alias a cada campo para que coincida con los atributos del objeto, lo cual es adecuado para situaciones donde el nombre del campo de la tabla y el nombre del atributo del objeto son muy diferentes y no hay muchos campos de tabla.
2. Utilizar la transformación automática de joroba subrayada de mybatis
mybatis tiene una opción llamada mapUnderscoreToCamelCase que se aplica cuando el nombre del campo en la tabla es el mismo que el nombre del atributo del objeto, pero la diferencia entre la escritura de guion bajo y la de joroba.
Después de configurar mapUnderscoreToCamelCase, mybatis intentará convertir el guion bajo en un hush al configurar los datos encontrados en el ResultSet al objeto, y luego unirá el conjunto delante para establecer los atributos.
Activa la conversión:
Luego consulta:
Al observar el resultado impreso, birth_day atributos se llenan en el objeto:
3. Usar ResultMap
Si el nombre de campo de la tabla y el nombre del atributo del objeto no son muy parecidos, y hay muchos campos en la tabla, se debe usar ResultMap para la adaptación.
@Results corresponde al ResultMap en XML, y puedes especificar un id para él, que puede usarse para referenciarlo en otro lugar, como para referenciar los resultados anteriores:
Utiliza @ResultMap para referenciar un ResultMap existente, que puede definirse en Java usando anotaciones @Results o en XML usando etiquetas resultMap.
2.5 Código de ejemplo
User.java
UserMapper.java
3. Resumen
Ventajas de usar anotaciones de interfaz:
1. Es más cómodo y rápido escribir sentencias de mapeo
Desventajas de usar anotaciones de interfaz:
1. Es adecuado para configuraciones relativamente simples, y la interfaz no puede hacerse cuando es demasiado complicada.
2. No poder usar SQL dinámico, es un poco de mal gusto.
|