在MyBatis中,resultType和resultMap都用于指定查询结果的映射方式,但有以下区别:
resultType:resultType用于指定查询结果的映射类型。它可以是Java基本类型、JavaBean或集合类型。当查询结果只有一个字段时,可以使用resultType指定映射类型。例如:
<select id="getUserName" resultType="java.lang.String">
SELECT name FROM user WHERE id = #{id}
</select>
当查询结果为多个字段时,无法使用resultType进行映射,需要使用resultMap。
resultMap:resultMap用于定义查询结果的映射规则。它可以自定义映射规则,将查询结果的字段与Java对象的属性进行映射。resultMap需要在Mapper XML文件中进行定义。例如:
<resultMap id="userResultMap" type="com.example.User">
<id property="id" column="user_id" />
<result property="name" column="user_name" />
<result property="age" column="user_age" />
</resultMap>
<select id="getUser" resultMap="userResultMap">
SELECT id AS user_id, name AS user_name, age AS user_age FROM user WHERE id = #{id}
</select>
上述示例中,resultMap定义了一个id为userResultMap的映射规则,指定了查询结果字段user_id、user_name和user_age与User对象的id、name和age属性的映射关系。在select语句中使用resultMap属性引用了这个映射规则。如果查询结果有多个字段,且需要进行复杂的映射关系处理时,可以使用resultMap。
综上所述,resultType适用于简单的查询结果映射,而resultMap适用于复杂的查询结果映射。