resultType
和 resultMap
是 MyBatis 中用于结果集映射的两种方式,它们有以下区别:
resultType
:
- 作用:
resultType
指定了查询结果将被映射到的目标 Java 对象类型。 - 用法:可以直接指定目标对象的类型,MyBatis 将结果集映射到该类型的对象中。
示例:
<!-- XML 映射文件 -->
<select id="getUser" resultType="User">
SELECT user_id, user_name FROM users WHERE id = #{id}
</select>
- 优点:简单直接,适用于简单的查询,但对于复杂对象结构映射较为局限。
resultMap
:
- 作用:
resultMap
允许开发者自定义复杂的结果集到对象之间的映射关系。 - 用法:需要在 XML 映射文件中定义一个
resultMap
,其中包含了详细的映射规则。
示例:
<!-- XML 映射文件 -->
<resultMap id="UserResultMap" type="User">
<id property="id" column="user_id"/>
<result property="username" column="user_name"/>
<!-- 其他映射关系 -->
</resultMap>
<select id="getUser" resultMap="UserResultMap">
SELECT user_id, user_name FROM users WHERE id = #{id}
</select>
- 优点:灵活性更高,可以定义复杂的映射关系,适用于复杂对象结构的映射。
总结:
resultType
是将整个结果集直接映射到指定类型的对象。resultMap
允许定义更加灵活和复杂的映射规则,适用于需要定制化映射的情况,尤其适合复杂对象结构的映射。
Was this helpful?
0 / 0