Loading

mybatis结果集映射(resultMap属性)

  • 【官方声明】

    resultMap 元素是 MyBatis 中最重要最强大的元素。它可以让你从 90% 的 JDBC ResultSets 数据提取代码中解放出来,并在一些情形下允许你进行一些 JDBC 不支持的操作。实际上,在为一些比如连接的复杂语句编写映射代码的时候,一份 resultMap 能够代替实现同等功能的数千行代码。ResultMap 的设计思想是,对简单的语句做到零配置,对于复杂一点的语句,只需要描述语句之间的关系就行了。

  • 【数据库字段】与【类属性字段】存在以下两种情况

    1. 命名相同:返回对应字段值
    2. 命名不相同:将导致查询不到指定字段值,返回'null'
  • 解决【数据库字段】与【类属性字段】不相同

    1. SQL语句中实现字段别名

      • 【官方示例】

      image

    2. mapper映射器中<resultMap>标签绑定

      • 【官方实例】

        image

  • 修改mapper映射器 【UsersMapper】

      ```xml
      <?xml version="1.0" encoding="UTF-8" ?>
      <!DOCTYPE mapper
              PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
              "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
      <mapper namespace="com.camemax.dao.UsersMapper">
      
          <!-- 查询指定用户信息 -->
          <resultMap id="resultMapUser" type="users">
              <!-- 类属性【userId】映射为数据库中的【id】字段 -->
              <id property="userId" column="id"/>
              <!-- 类属性【userName】映射为数据库中的【name】字段 -->
              <result property="userName" column="name" />
              <!-- 类属性【userPasswd】映射为数据库中的【password】字段 -->
              <result property="userPasswd" column="password" />
          </resultMap>
      
          <!-- 【resultMap】属性指向<resultMap>标签 -->
          <select id="getUserInfoByUserId" resultType="users" parameterType="_int" resultMap="resultMapUser">
              select * from mybatis.users
              where id = #{id}
          </select>
      </mapper>
      ```
    
posted @ 2022-03-18 18:44  Cn_FallTime  阅读(111)  评论(0编辑  收藏  举报