5. Archivo XML de Mapper detallado

1. Etiqueta CRUDA

1.1.seleccionar

instrucción de consulta select-write sql

Descripción de varios atributos en select: 
id atributo: el identificador único de la declaración bajo el espacio de nombres actual. Debe Los nombres de los métodos en las interfaces id y mapper deben ser los mismos. 
resultType: asigna el conjunto de resultados al tipo de objeto de java. Requerido (elija uno de resultMap) 
parameterType: el tipo de parámetro pasado. Puede ser omitido

1.2 inserción

Descripción de varios atributos de inserción:

id: identificador único, escríbalo casualmente, manténgalo único bajo el mismo espacio de nombres, después de usar el proxy dinámico, debe ser coherente con el nombre del método 
parámetroType: el tipo del parámetro, después de usar el proxy dinámico, y el tipo de parámetro del método son consistentes 
useGeneratedKeys: active la clave primaria write 
keyColumn : Especifique la clave primaria de la base de datos 
keyProperty: el nombre del atributo pojo correspondiente a la clave primaria Dentro de la 
etiqueta: instrucción sql específica

1.3 actualización

atributo id: el identificador único de la declaración en el espacio de nombres actual (atributo requerido); 
parameterType: el tipo de parámetro pasado, que puede omitirse. 
Dentro de la etiqueta: declaración SQL específica.

1.4 eliminar

Descripción de varios atributos de eliminación: 
atributo id: el identificador único de la declaración bajo el espacio de nombres actual (atributo requerido); 
parameterType: el tipo de parámetro pasado, que puede omitirse. 
Dentro de la etiqueta: declaración SQL específica.

2. # {} y $ {}

Escenario: la base de datos tiene dos tablas idénticas. La tabla de historial, la
información de consulta de la tabla actual en la tabla, a veces para consultar datos de la tabla de historial, a veces necesita ir a la nueva tabla para consultar datos.
Espero usar 1 método para completar la operación.

< select id = "queryUserByTableName" resultType = "com.zpc.mybatis.pojo.User" > 
  seleccione * de # {tableName} 
</ select >
/ ** 
* Consultar información del usuario basada en el nombre de la tabla (use la anotación para especificar el nombre del parámetro entrante) 
* 
* @param tableName 
* @return 
* / 
public List <User> queryUserByTableName (String tableName);

Prueba de salida:

Si hay un problema, informe un error de sintaxis: es equivalente a ejecutar tal sql:

seleccione * de 'tb_user';

Obviamente, el nombre de la tabla tiene más comillas.

Enmienda:

<select id = "queryUserByTableName" resultType = "com.zpc.mybatis.pojo.User"> 
  seleccione * de $ {tableName}
 </select>

Nota:
# {} es solo un reemplazo? , Equivalente a PreparedStatement usando marcadores de posición para reemplazar parámetros, puede evitar la inyección de SQL.
$ {} Es para la concatenación de cadenas, que es equivalente a la Declaración en la declaración sql, usando cadenas para empalmar sql; $ puede ser cualquier parte de la sql que se pasa a la Declaración y no puede evitar la inyección sql.

Para usar $ {} para recuperar la información del valor del parámetro, debe usar $ {value}
# {} Solo significa un marcador de posición y no tiene nada que ver con el nombre del parámetro. Si solo hay un parámetro, se corresponderá automáticamente.

Recomendado:

/ ** 
* Consultar información del usuario basada en el nombre de la tabla (use la anotación para especificar el nombre del parámetro entrante) 
* 
* @param tableName 
* @return 
* / 
public List <User> queryUserByTableName (@Param ("tableName") String tableName);
<select id = "queryUserByTableName" resultType = "com.zpc.mybatis.pojo.User"> 
    seleccione * de $ {tableName}
 </select>

# {} Cuando varios parámetros:

/ ** 
* Iniciar sesión (utilice la anotación para especificar el nombre del parámetro entrante directamente) 
* 
* @param userName 
* @param contraseña 
* @return 
* / 
public User login (String userName, String password);
<select id = "login" resultType = "com.zpc.mybatis.pojo.User"> 
    seleccione * de tb_user donde user_name = # {userName} y password = # {password}
 </select>

Error:

org.apache.ibatis.exceptions.PersistenceException:
### Error al consultar la base de datos. Causa: org.apache.ibatis.binding.BindingException: parámetro 'userName' no encontrado. Los parámetros disponibles son [0, 1, param1, param2]
### Causa: org.apache.ibatis.binding.BindingException: No se encontró el parámetro 'userName'. Los parámetros disponibles son [0, 1, param1, param2]

Solución uno:

<select id = "login" resultType = "com.zpc.mybatis.pojo.User"> 
    seleccione * de tb_user donde user_name = # {0} y contraseña = # {1 }
 </select>

Solución dos:

<select id = "login" resultType = "com.zpc.mybatis.pojo.User"> 
    seleccione * de tb_user donde user_name = # {param1} y contraseña = # {param2}
 </select>

La solución final:

/ ** 
* Inicio de sesión (use la anotación para especificar el nombre del parámetro entrante directamente) 
* 
* @param userName 
* @param contraseña 
* @return 
* / 
public User login (@Param ("userName") String userName, @Param ("password") Cadena de contraseña);
<select id = "login" resultType = "com.zpc.mybatis.pojo.User"> 
    seleccione * de tb_user donde user_name = # {userName} y password = # {password}
 </select>

Por lo general, agregue un comentario @Param ("xxxx") a la lista de parámetros del método para especificar explícitamente el nombre del parámetro, y luego use $ {"xxxx"} o # {"xxxx"} para
generar dinámicamente la instrucción sql, use $ { }; Cuando
un parámetro está ocupado en una instrucción sql # {}

3.Mapa de resultados

Escriba una descripción de la imagen aquí
Escriba una descripción de la imagen aquí
Uso:
Escriba una descripción de la imagen aquí

Fragmento 4.sql

<sql id = ””> </sql> 
<include refId = ”” />

Por ejemplo, el siguiente fragmento se define en UserMapper.xml:

<sql id = "commonSql"> 
id, 
nombre_de_usuario, 
contraseña, 
nombre, 
edad, 
sexo, 
cumpleaños, 
creado, 
actualizado    
 </sql>

Los fragmentos SQL también se pueden definir en un archivo .xml separado, como:
Definir CommonSQL.xml:

<? xml version = "1.0" encoding = "UTF-8" ?> 
<! DOCTYPE mapper 
PUBLIC "- // mybatis.org//DTD Mapper 3.0 // ES" 
"http://mybatis.org/dtd/mybatis-3-mapper.dtd" > 
< mapper namespace = "CommonSQL" > 
< sql id = "commonSql" > 
id, 
nombre_usuario, 
contraseña, 
nombre, 
edad, 
sexo, 
cumpleaños, 
creado, 
actualizado     
</ sql > 
</ mapper >

Uso:

< select id = "queryUserById" resultMap = "userResultMap" > 
  seleccione < include refid = "CommonSQL.commonSql" > </ include > desde tb_user donde id = # {id}
 </ select >
< select id = "queryUsersLikeUserName" resultType = "User" > 
    select < include refid = "CommonSQL.commonSql" > </ include > de tb_user donde user_name como "%" # {userName} "%"
 </ select >

Por supuesto, para completar esta función, el archivo de configuración externo debe introducirse en el archivo de configuración global mybatis-config.xml:

< mappers > 
  < mapper resource = "CommonSQL.xml" /> 
  <! - Habilita el escaneo de paquetes de la interfaz del mapeador, configuración basada en clases- > 
  < package name = "com.zpc.mybatis.mapper" /> 
</ mapeadores >

 

Supongo que te gusta

Origin www.cnblogs.com/jvStarBlog/p/12735990.html
Recomendado
Clasificación