在MyBatis中,resultType和resultMap都用于描述查询结果如何映射到Java对象。它们之间有一些关键区别:
resultType:当你需要将查询结果映射到一个简单的Java类型时,可以使用resultType。例如,基本数据类型、String、Date等。resultType只能处理单个查询结果集。如果查询返回多个结果集,resultType将无法处理。resultType通过直接指定Java类型来完成映射,不需要额外的配置。示例:
SELECT * FROM users</select>resultMap:当你需要将查询结果映射到一个复杂的Java对象或者需要自定义映射规则时,可以使用resultMap。例如,嵌套对象、一对多关系等。resultMap可以处理多个查询结果集,并为每个结果集指定不同的映射规则。resultMap需要额外的配置,通过定义<resultMap>元素及其子元素(如<id>、<result>、<association>、<collection>等)来描述映射规则。示例:
<id property="id" column="id"/> <result property="username" column="username"/> <result property="email" column="email"/> <association property="address" javaType="com.example.Address"> <result property="street" column="street"/> <result property="city" column="city"/> </association></resultMap><select id="selectUsers" resultMap="userResultMap"> SELECT * FROM users</select>总结:
如果查询结果映射到一个简单的Java类型,可以使用resultType。如果查询结果映射到一个复杂的Java对象或需要自定义映射规则,可以使用resultMap。

