【学习笔记】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>
-
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!