ResultMap 结果集映射
背景:
我们在写sql配置文件时,以select标签为例,resultType属性绑定的是实体类
<select id="getUsers" resultType="user">
select * from jdbcstudy.users;
</select>
sql语句从数据库中查出来的数据与绑定的实体类一一对应,在之前的例子中,数据库中的字段与实体类的属性是一一对应完全一致的。所以使用resultType没有任何问题
但是如果数据库的字段和实体类的属性不对应发生偏差,就会造成某些问题,如下
我们以User这个实体类为例,数据库中的字段为password,我们将实体类User中的属性改为pwd,这样就不对应了,再去查找用户,我们看看会发生什么问题。
问题出现了:即pwd全部为null,原因就是数据库字段password与实体类属性pwd不对应
为了要解决这个问题,有两个方案
-
在sql中为password 起别名 pwd
<select id="getUsers" resultType="user"> select id,name,password as pwd ,email,birthday from jdbcstudy.users; </select>
-
使用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>
-
标签:实体类,映射,数据库,笔记,pwd,ResultMap,password,select,属性 From: https://www.cnblogs.com/wztblogs/p/17021727.html