在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適用于復雜的查詢結果映射。