- MyBatis的每一个查询映射的返回类型都是ResultMap,只是当我们提供的返回类型属性是resultType的时候,MyBatis会自动的给我们把对应的值赋给resultType所指定对象的属性,而当我们提供的返回类型是resultMap的时候,将数据库中列数据复制到对象的相应属性上,可以用于复制查询,两者不能同时用
resultType
该属性就是resultMap返回的映射类型
当实体类的属性名和查询到的数据库表的字段名一致时,resultType将查询到的结果映射封装成实体类类型
示例
<select id="getUserById" parameterType="int" resultType="Users">
select * from smbms_user where
id=#{id}
</select>
resultMap
当实体类的属性名和查询到的数据库表的字段名不一致时,resultMap将字段映射到对应的实体类的属性中,防止匹配失败
resultMap可以实现将查询结果映射为复杂类型的实体类对象,比如在查询结果映射对象中包括实体类对象和list实现一对一查询和一对多查询
示例
<resultMap id="ReultMap" type="Bills">
<result property="billcode" column="billcode"/>
<result property="productName" column="productName"/>
<result property="proName" column="proName"/>
<result property="productCount" column="productCount"/>
<result property="isPayment" column="isPayment"/>
<result property="creationDate" column="creationDate"/>
</resultMap>
<select id="getBillListByMap" resultMap="ReultMap">
SELECT sb.billcode,sb.productName,sp.proName,sb.productCount,sb.isPayment,sb.creationDate
FROM smbms_bill AS sb,smbms_provider AS sp
WHERE
sb.providerId = sp.id
AND
sb.providerId=#{providerId}
</select>
来自 <https://blog.csdn.net/u012843873/article/details/80198185>