Cómo configurar el mapeo de resultados en el archivo de mapeo SQL en MyBatis

Cómo configurar el mapeo de resultados en el archivo de mapeo SQL en MyBatis

prefacio

MyBatis es un marco ORM excelente, que proporciona una variedad de métodos de configuración para definir sentencias SQL y reglas de mapeo de resultados. Entre ellos, el archivo de mapeo SQL es uno de los métodos de configuración más utilizados de MyBatis, define declaraciones SQL y reglas de mapeo de resultados a través de archivos XML, lo cual es muy conveniente y flexible de usar. Este artículo presentará cómo el archivo de mapeo SQL en MyBatis configura el mapeo de resultados, incluidos los tipos generales, los tipos de colección y otras situaciones.

inserte la descripción de la imagen aquí

gramática básica

En el archivo de mapeo SQL de MyBatis, podemos usar <resultMap>la etiqueta para definir las reglas de mapeo de resultados, por ejemplo:

<!-- 定义用户结果映射规则 -->
<resultMap id="userResultMap" type="com.example.model.User">
  <id property="id" column="id" />
  <result property="username" column="username" />
  <result property="password" column="password" />
</resultMap>

En el ejemplo anterior, hemos usado <resultMap>la etiqueta para definir una userResultMapregla de mapeo de resultados llamada , donde idel atributo se usa para especificar un identificador único para la regla, typeel atributo se usa para especificar el tipo de Java al que se aplica la regla <id>y <result>la etiqueta se utiliza para definir la relación de mapeo de las propiedades del objeto con los campos de la base de datos.

Entre ellos, <id>la etiqueta se usa para definir el campo de clave principal, propertyla propiedad se usa para especificar el nombre de propiedad del objeto Java y columnla propiedad se usa para especificar el nombre de campo de la tabla de la base de datos. <result>Las etiquetas se utilizan para definir campos ordinarios y sus atributos <id>son los mismos que las etiquetas, excepto que no es necesario especificar campos de clave principal.

Después de definir la regla de mapeo de resultados, podemos usar la etiqueta en la instrucción SQL <resultMap>para referirnos a la regla, por ejemplo:

<!-- 查询用户列表 -->
<select id="selectUsers" resultMap="userResultMap">
  SELECT * FROM users
</select>

En el ejemplo anterior, usamos resultMapel atributo para especificar las reglas de mapeo para los resultados devueltos, y el valor de este atributo se define antes userResultMap.

tipo regular

Cuando la instrucción SQL devuelve tipos convencionales (como cadenas, enteros, números de coma flotante, etc.), podemos usar resultTypeel atributo para especificar el tipo del valor devuelto, por ejemplo:

<!-- 查询用户数量 -->
<select id="countUsers" resultType="int">
  SELECT COUNT(*) FROM users
</select>

En el ejemplo anterior, usamos resultTypeel atributo para especificar el tipo del valor de retorno int, lo que significa devolver un número entero.

tipo de colección

Cuando la declaración SQL devuelve un tipo de colección, podemos usar resultTypeel atributo para especificar el tipo de elementos en la colección, por ejemplo:

<!-- 查询用户列表 -->
<select id="selectUsers" resultType="com.example.model.User">
  SELECT * FROM users
</select>

En el ejemplo anterior, usamos resultTypeel atributo para especificar el tipo de valor de retorno com.example.model.User, lo que significa devolver una lista de objetos de usuario.

Además de usar resultTypeatributos, también podemos usar <collection>etiquetas para definir reglas de mapeo para tipos de colección, por ejemplo:

<!-- 定义用户结果映射规则 -->
<resultMap id="userResultMap" type="com.example.model.User">
  <id property="id" column="id" />
  <result property="username" column="username" />
  <result property="password" column="password" />
  <collection property="orders" ofType="com.example.model.Order">
    <id property="id" column="order_id" />
    <result property="name" column="order_name" />
  </collection>
</resultMap>

En el ejemplo anterior, hemos usado <collection>la etiqueta para definir una orderslista de orden llamada , donde propertyel atributo se usa para especificar el nombre de la propiedad del objeto Java, ofTypeel atributo se usa para especificar el tipo de elemento en la colección <id>y <result>la etiqueta es se utiliza para definir las propiedades del objeto y la relación de asignación de campos de la base de datos entre ellos.

SQL dinámico

En el desarrollo real, a veces necesitamos generar diferentes sentencias SQL de acuerdo a diferentes condiciones.En este momento, podemos usar la función de SQL dinámico proporcionada por MyBatis. El SQL dinámico puede generar sentencias SQL dinámicamente de acuerdo con las condiciones, que incluyen si, elegir, cuándo, de lo contrario, recortar, dónde, establecer, foreach y otras etiquetas. En SQL dinámico, también podemos usar <resultMap>etiquetas para definir reglas de mapeo de resultados, por ejemplo:

<!-- 根据用户名和密码查询用户 -->
<select id="selectUserByUsernameAndPassword" resultMap="userResultMap">
  SELECT * FROM users
  <where>
    <if test="username != null">
      AND username = #{username}
    </if>
    <if test="password != null">
      AND password = #{password}
    </if>
  </where>
</select>

En el ejemplo anterior, usamos <if>la etiqueta para determinar si el parámetro está vacío y generamos la instrucción SQL correspondiente si no lo está. La <where>etiqueta se usa para empalmar automáticamente la palabra clave WHERE en la instrucción SQL y eliminar las palabras clave AND/OR redundantes. . Una vez ejecutada la sentencia SQL, MyBatis mapeará userResultMapel resultado de la consulta a un objeto Usuario según lo definido previamente.

en conclusión

A través de la introducción de este artículo, hemos aprendido cómo configurar las reglas de mapeo de resultados en el archivo de mapeo SQL en MyBatis. Ya sea un tipo convencional, un tipo de colección o SQL dinámico, MyBatis proporciona etiquetas y atributos correspondientes para respaldar la definición del mapeo de resultados. En el desarrollo real, de acuerdo con los requisitos comerciales específicos y los modelos de datos, podemos mapear los resultados de la consulta en los objetos Java correspondientes definiendo diferentes reglas de mapeo de resultados, para facilitar la operación de datos y el procesamiento comercial.

Supongo que te gusta

Origin blog.csdn.net/2302_77835532/article/details/131654171
Recomendado
Clasificación