【Mybatis】中SQL语句的返回类型:resultMap和resultType的区别

本文介绍了MyBatis中resultType和resultMap的区别。resultType用于简单映射,当数据库列名与实体类属性名一致时适用;而resultMap则是高级映射,允许自定义列名与属性名的映射关系,适用于列名不一致的情况,提供更大的灵活性。通过示例展示了如何配置resultMap以实现映射。
摘要由CSDN通过智能技术生成

resultMap和resultType的区别

MyBatis在查询时,返回类型可以用resultType,也可以用resultMap。

resultType 直接表示返回类型 ,而resultMap需要配置对应关系

resultType跟resultMap 不能同时存在

MyBatis在进行查询映射时,查询出的每个属性,其实都是放在一个Map里,其中键是数据库的字段名,值是其查询出的数据。

①当返回类型是resultType时,MyBatis会将Map里面的键值对取出来,赋给resultType所指定的对象对应的属性。(要保证 结果集的列名与java对象的属性名 完全相同

但是有时候,数据库的字段名和对象的属性名 并不一致,这种情况下,使用 resultType是不能匹配成功的,比如:

数据库字段 user_id 和实体类User中的userId是不能匹配的。

这种情况下,就需要 ResultMap

	<resultMap type="User" id="userMap">
		<id     property="userId"       column="user_id"      />
		<result property="userName"     column="user_name"    />
		<result property="password"     column="password"     />
		<result property="status"       column="status"       />
		<result property="delFlag"      column="del_flag"     />
		<result property="createTime"   column="create_time"  />
	</resultMap>
	<sql id="selectUserVo">
        select u.user_id,  u.user_name, u.password, u.status, u.del_flag, u.create_time from user u		    
    </sql>
	<select id="selectUserByUserName" parameterType="String" resultMap="userMap">
	    <include refid="selectUserVo"/>
		where u.user_name = #{userName}
	</select>

此时 resultMap="userMap"是一个外部resultMap的id,表示将该查询语句的结果 映射userMap上。

这种情况无需关注 实体类的属性名和数据库的列名是否一致,因此非常的灵活,功能也更加强大

总结

  • resultType

基本映射 :查询出来的 列名 和实体类中的 属性名 一致,该列才可以映射成功。

  • resultMap

高级映射 :定义一个数据库 列名 和实体类中 属性名 间的映射关系。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值