MyBatisのresultTypeとresultMapにはどんな違いがありますか?
MyBatisのresultTypeとresultMapは、どちらもクエリの結果をJavaオブジェクトにマッピングするために使用されますが、いくつかの違いがあります。
- resultType:resultTypeは、1つの結果オブジェクトの型を指定するために使用されます。通常、クエリ結果が1列の場合に使用され、結果タイプとしてJavaオブジェクトの型を直接指定することができます。
<select id="selectUser" resultType="com.example.User">
SELECT id, name FROM user
</select>
- resultMapは、複雑なマッピング関係を指定するために使用されるものであり、複数のフィールドやJavaオブジェクト間のマッピング関係を指定することができ、一対一や一対多などの複雑なマッピング関係を実現することができます。
<resultMap id="userResultMap" type="com.example.User">
<id property="id" column="id"/>
<result property="name" column="name"/>
</resultMap>
<select id="selectUser" resultMap="userResultMap">
SELECT id, name FROM user
</select>
総じて、resultTypeは単一の結果マッピングに適しており、resultMapは複雑な複数のフィールドをJavaオブジェクトにマッピングする場合に適しています。