MyBatisのresultMapとresultTypeにはどんな違いがありますか?
Mybatisにおいて、resultMapとresultTypeはクエリ結果セットをマッピングする2つの異なる方法です。
- resultTypeは、クエリ結果のタイプを指定するものであり、基本的なタイプ(int、Stringなど)またはカスタムのJavaオブジェクトタイプが指定できます。結果が1つの列しかない場合は、resultTypeを使用して列のタイプを直接指定することができます。例:
<select id="getUserCount" resultType="int">
SELECT COUNT(*) FROM users
</select>
- resultMapは、クエリ結果セットの列をJavaオブジェクトのプロパティにマッピングするためにマッピング関係を定義することで生成されます。resultMapでは、各列に対応するプロパティ、タイプ、およびいくつかの追加のマッピング規則を指定することができます。例:
<resultMap id="userResultMap" type="User">
<id property="id" column="id" />
<result property="name" column="name" />
<result property="age" column="age" />
</resultMap>
<select id="getUserById" resultMap="userResultMap">
SELECT * FROM users WHERE id = #{id}
</select>
要約:
- resultTypeは、単純なクエリに適用され、基本型または単純なオブジェクトを1つだけ返します。
- resultMapは複雑なクエリに適用され、クエリ結果をカスタムのJavaオブジェクトにマッピングし、追加のマッピングルールを設定することができます。