专注于分布式,性能优化,代码之美

mybatis 的ResultMap和ResultType区别是什么?

 
官方文档说明:

ResultType: 期望从这条语句中返回结果的类全限定名或别名。 注意,如果返回的是集合,那应该设置为集合包含的类型,而不是集合本身的类型。 resultType 和 resultMap 之间只能同时使用一个。
ResultMap: 对外部 resultMap 的命名引用。结果映射是 MyBatis 最强大的特性,如果你对其理解透彻,许多复杂的映射问题都能迎刃而解。
白话文说明:

ResultMap和ResultType都是用于设置mybatis增删改查后返回的数据类型。那么什么时候用ResultMap,什么时候用ResultType呢?
如果你搜索只是返回一个值,比如说String ,或者是int,那你直接用resultType就行了。
例如:


//dao中的接口
int addArticleThumbs(String id);

<!--文章点赞数+1-->
<update id="addArticleThumbs" ResultType="int">
update
<include refid="tableName"></include>
<set>
art_thumbs = art_thumbs+1
</set>
where
id = #{id}
</update>
 
该SQL返回的是int型,那么ResultType定义成int型即可直接与Java进行绑定(基本数据类型默认可不写)。
2. 但是你如果是返回一个复杂的对象,就可以使用ResultMap(当然ResultType也是可以的)。

例如:

创建User 对象, 拥有两个字段id,userName。

//dao中的接口
User queryUser(String id);

<resultMap id="User" type="com.ssbm.ccapp.model.app.Usre">
<result column="user_name" jdbcType="VARCHAR" property="userName" />
</resultMap>

<!--文章点赞数+1-->
<select id="queryUser" resultMap="User">
select * from user where id = #{id}
</select>
 

posted on 2022-08-31 11:09  xiaohouye  阅读(790)  评论(0编辑  收藏  举报

导航

今日之劳累是为了铸造明日之辉煌,不管年龄多少,都无法阻挡我对软件艺术的追求!