resulType 和 resultMap 的区别

Exisi 2021-03-27 07:31:30
Categories: Tags:
  • 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>