MyBatis 中 ResultMap 和 resultType 的区别:如何映射查询结果
ResultMap 和 resultType 是 MyBatis 中用于映射查询结果的两种方式。
- resultType:
resultType属性用于指定查询结果的类型。它可以是任何 Java 类的全限定名,也可以是 Java 基本类型或包装类。当查询的结果集非常简单,只有一个列时,可以使用resultType来指定查询结果的类型。
示例:
<select id="getUserCount" resultType="int">
SELECT COUNT(*) FROM users
</select>
在这个例子中,查询结果只有一个列,即用户的数量,因此使用 resultType 来指定查询结果的类型为 int。
- resultMap:
resultMap属性用于指定一个结果映射规则,将查询结果集中的列与 Java 对象的属性进行映射。通过resultMap,可以将查询结果映射为复杂的 Java 对象,可以处理多个列和嵌套查询的情况。
示例:
<resultMap id="userResultMap" type="User">
<id property="id" column="id" />
<result property="username" column="username" />
<result property="password" column="password" />
</resultMap>
<select id="getUserById" resultMap="userResultMap">
SELECT * FROM users WHERE id = #{id}
</select>
在这个例子中,定义了一个名为 userResultMap 的结果映射规则,指定了查询结果中的 id 列与 Java 对象的 id 属性进行映射,以及 username 列和 password 列与 Java 对象的 username 属性和 password 属性进行映射。在查询语句中使用 resultMap 属性来应用这个结果映射规则。
总结:
resultType适用于简单的查询结果,只需要指定结果的类型即可。resultMap适用于复杂的查询结果,可以通过定义结果映射规则来进行灵活的映射。
原文地址: https://www.cveoy.top/t/topic/o7Wa 著作权归作者所有。请勿转载和采集!