【学习笔记】ResultMap 结果集映射

ResultMap 结果集映射

背景:

我们在写sql配置文件时,以select标签为例,resultType属性绑定的是实体类

<select id="getUsers" resultType="user">
    select * from jdbcstudy.users;
</select>

sql语句从数据库中查出来的数据与绑定的实体类一一对应,在之前的例子中,数据库中的字段与实体类的属性是一一对应完全一致的。所以使用resultType没有任何问题

但是如果数据库的字段和实体类的属性不对应发生偏差,就会造成某些问题,如下

我们以User这个实体类为例,数据库中的字段为password,我们将实体类User中的属性改为pwd,这样就不对应了,再去查找用户,我们看看会发生什么问题。

image-20230103120336277

问题出现了:即pwd全部为null,原因就是数据库字段password与实体类属性pwd不对应

为了要解决这个问题,有两个方案

  1. 在sql中为password 起别名 pwd

    <select id="getUsers" resultType="user">
        select id,name,password as pwd ,email,birthday from jdbcstudy.users;
    </select>
  2. 使用ResultMap 来映射

    • 定义一个resultMap,属性有id(resultMap的名字)type(就是对应的实体类)

      里面的标签是 result 属性有column(数据库的字段)property(实体类的属性)

      <resultMap id="userMap" type="user">
          <result column="password" property="pwd"/>
      </resultMap>

      我们将不对应的数据库中字段名和实体类属性名放到result标签中,进行对应

    • 在select标签中绑定这个resultMap,值就是它的id

      <select id="getUsers" resultMap="userMap">
          select * from jdbcstudy.users;
      </select>

image-20230103121726184

 

posted @ 2023-01-03 12:19  GrowthRoad  阅读(51)  评论(0编辑  收藏  举报