结论:resultType与resultMap都可以用于接收mybatisplus中select的查询结果,resultType适合接收简单的查询结果集,而resultMap则可以胜任接收复杂的查询结果集
resultType
resultType属性可以指定一个JavaBean,这个JavaBean的属性名与查询结果的列名相对应
,MyBatis可以自动为每个属性注入对应的值,从而构建一个完整的JavaBean对象作为查询结果。例如:
<select id="selectUserById" resultType="com.example.User">
SELECT * FROM user WHERE id = #{id}
</select>
这里的resultType指定了查询结果是一个com.example.User对象,而每个User对象的属性会依次与查询结果的列名相对应。
resultMap
resultMap则更加灵活,能够实现复杂的结果映射。在resultMap中,我们可以通过定义标签来明确指定如何将查询结果的列映射到JavaBean的属性上,可以进行任意的转换和计算操作。例如:
<resultMap id="userMap" type="com.example.User">
<result property="id" column="user_id" />
<result property="name" column="user_name" />
<result property="age" column="user_age" />
<result property="address" column="user_address" />
<result property="phone" column="user_phone"
jdbcType="VARCHAR" javaType="com.example.PhoneNumber"
select="selectPhoneNumberById" />
</resultMap>
<select id="selectUser" resultMap="userMap">
SELECT user_id, user_name, user_age, user_address, user_phone
FROM users WHERE id = #{id}
</select>
这里的resultMap中,除了基本的属性映射之外,Phone字段还使用了自定义的类型转换方式,并调用了selectPhoneNumberById方法进行属性的填充。
综上所述,resultType和resultMap都是用于MyBatis结果集类型映射的属性。其中,resultType适用于简单的结果映射,而resultMap则更加灵活,可以实现任何复杂的结果映射。