首页 > 其他 > 详细

MyBatis中关于resultType和resultMap的区别

时间:2019-07-24 23:13:32      阅读:104      评论:0      收藏:0      [点我收藏+]

MyBatis中关于resultType和resultMap的区别 

共同:MyBatis中在查询进行select映射的时候,返回类型为resultType、resultMap 
区别: 
1.resultType是直接表示返回类型的(对应着我们的model对象中的实体) 
2.resultMap则是对外部ResultMap的引用(提前定义了db和model之间的隐射key-->value关系),但是resultType跟resultMap不能同时存在。 

Xml代码  技术分享图片
  1. <resultMap id="BaseResultMap" type="po.BuyerCompanyInfo">  
  2. <id column="id" jdbcType="BIGINT" property="id" />  
  3. <result column="executive_firstname"   jdbcType="VARCHAR"property="executiveFirstname"/>  
  4. <result column="executive_lastname" jdbcType="VARCHAR"  
  5. property="executiveLastname" />  
  6. <result column="create_time" jdbcType="TIMESTAMP" property="createTime" />  
  7. </resultMap>  


在MyBatis进行查询映射时,其实查询出来的每一个属性都是放在一个对应的Map里面的,其中键是属性名,值则是其对应的值。 

具体解释: 
①当提供的返回类型属性是resultType时,MyBatis会将Map里面的键值对取出赋给resultType所指定的对象对应的属性。所以其实MyBatis的每一个查询映射的返回类型都是ResultMap,只是当提供的返回类型属性是resultType的时候,MyBatis会自动的把给对应的值赋给resultType所指定对象的属性。 

②当提供的返回类型是resultMap时,因为Map不能很好表示领域模型,就需要自己再进一步的把它转化为对应的对象,这常常在复杂查询中很有作用。 

个人总结: 
1.与数据表对应的实体类中若有如下类似字段 
表中create_time 
类中createTime 
返回值类型为 resultMap 
否则,select方法的结果值中createTime字段的值为NULL 
即  

resultType查询出来的列名和pojo中属性名一直才能映射成功;

resultMap如果查询出来的列名和pojo中的属性名不一致,通过定义一个resultMap对列名和属性名之间做一个映射关系。

MyBatis中关于resultType和resultMap的区别

原文:https://www.cnblogs.com/whymoney1000/p/11241250.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!