Como configurar o mapeamento de resultados no arquivo de mapeamento SQL no MyBatis

Como configurar o mapeamento de resultados no arquivo de mapeamento SQL no MyBatis

prefácio

MyBatis é uma excelente estrutura ORM, que fornece uma variedade de métodos de configuração para definir instruções SQL e regras de mapeamento de resultados. Dentre eles, o arquivo de mapeamento SQL é um dos métodos de configuração mais utilizados do MyBatis, pois define instruções SQL e regras de mapeamento de resultados através de arquivos XML, o que é muito conveniente e flexível de usar. Este artigo apresentará como o arquivo de mapeamento SQL no MyBatis configura o mapeamento de resultados, incluindo tipos gerais, tipos de coleção e outras situações.

insira a descrição da imagem aqui

gramática básica

No arquivo de mapeamento SQL do MyBatis, podemos utilizar <resultMap>a tag para definir as regras de mapeamento do resultado, por exemplo:

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

No exemplo acima, usamos <resultMap>a tag para definir uma userResultMapregra de mapeamento de resultados chamada , onde ido atributo é usado para especificar um identificador exclusivo para a regra, typeo atributo é usado para especificar o tipo Java ao qual a regra se aplica <id>e <result>a tag é usado para definir o relacionamento de mapeamento das propriedades do objeto com os campos do banco de dados.

Entre eles, <id>o rótulo é usado para definir o campo de chave primária, propertya propriedade é usada para especificar o nome da propriedade do objeto Java e columna propriedade é usada para especificar o nome do campo da tabela do banco de dados. <result>As tags são usadas para definir campos comuns e seus atributos <id>são os mesmos das tags, exceto que nenhum campo de chave primária precisa ser especificado.

Após definir a regra de mapeamento do resultado, podemos usar o rótulo na instrução SQL <resultMap>para nos referirmos à regra, por exemplo:

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

No exemplo acima, usamos resultMapo atributo para especificar as regras de mapeamento para os resultados retornados e o valor desse atributo é definido antes de userResultMap.

tipo regular

Quando a instrução SQL retorna tipos convencionais (como strings, inteiros, números de ponto flutuante, etc.), podemos usar resultTypeo atributo para especificar o tipo do valor de retorno, por exemplo:

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

No exemplo acima, usamos resultTypeo atributo para especificar o tipo do valor de retorno int, o que significa retornar um número inteiro.

tipo de coleção

Quando a instrução SQL retorna um tipo de coleção, podemos usar resultTypeo atributo para especificar o tipo de elementos na coleção, por exemplo:

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

No exemplo acima, usamos resultTypeo atributo para especificar o tipo do valor de retorno com.example.model.User, o que significa retornar uma lista de objetos User.

Além de usar resultTypeatributos, também podemos usar <collection>tags para definir regras de mapeamento para tipos de coleção, por exemplo:

<!-- 定义用户结果映射规则 -->
<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>

No exemplo acima, usamos <collection>a tag para definir uma orderslista de pedidos chamada , onde propertyo atributo é usado para especificar o nome da propriedade do objeto Java, ofTypeo atributo é usado para especificar o tipo de elemento na coleção <id>e <result>a tag é usado para definir as propriedades do objeto e o relacionamento de mapeamento dos campos do banco de dados entre eles.

SQL dinâmico

No desenvolvimento real, às vezes precisamos gerar diferentes instruções SQL de acordo com diferentes condições. Neste momento, podemos usar a função SQL dinâmica fornecida pelo MyBatis. O SQL dinâmico pode gerar instruções SQL dinamicamente de acordo com as condições, incluindo se, escolha, quando, caso contrário, corte, onde, conjunto, foreach e outros rótulos. No SQL dinâmico, também podemos usar <resultMap>tags para definir regras de mapeamento de resultados, por exemplo:

<!-- 根据用户名和密码查询用户 -->
<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>

No exemplo acima, usamos <if>o rótulo para julgar se o parâmetro está vazio e geramos a instrução SQL correspondente se não estiver vazio. O <where>rótulo é usado para unir automaticamente a palavra-chave WHERE na instrução SQL e remover as palavras-chave AND/OR redundantes . Após a execução da instrução SQL, o MyBatis mapeará userResultMapo resultado da consulta para um objeto Usuário conforme definido anteriormente.

para concluir

Através da introdução deste artigo, aprendemos como configurar as regras de mapeamento de resultados no arquivo de mapeamento SQL no MyBatis. Seja um tipo convencional, um tipo de coleção ou SQL dinâmico, o MyBatis fornece tags e atributos correspondentes para dar suporte à definição do mapeamento de resultados. No desenvolvimento real, de acordo com requisitos de negócios e modelos de dados específicos, podemos mapear os resultados da consulta em objetos Java correspondentes definindo diferentes regras de mapeamento de resultados, de modo a facilitar a operação de dados e o processamento de negócios.

Acho que você gosta

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