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>
从代码中可以清晰的看出,resultMap可以对返回的参数进行配置,mybatis默认会进行驼峰转换,当数据库字段和Java对象字段不满足驼峰(列名不匹配),可以通过这里来配置,进行字段匹配。
以上的介绍是简单的入门,resultMap当然有更牛逼的用法,续更中,关注不迷路。。。