Mybatis中的resultMap和resultType区别

Mybatis中的resultMap和resultType区别基本映射:(resultType)使用resultType进行输出映射,只有查询出来的列名和实体类中的属性名一致,该列才可以映射成功。(数据库,实体,查询字段,这些全部都得一一对应)高级映射:(resultMap)如果查询出来的列名和实体类的属性名不一致,通过定义一个resultMap对列名和实体类属性名之间作一个映射关系。(高级映射,字段名称可以不一致,通过映射来实现…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

Mybatis

MyBatis中在查询进行select映射的时候,返回类型可以用resultType,也可以用resultMap,resultType是直接表示返回类型的,而resultMap则是对外部ResultMap的引用,但是resultType跟resultMap不能同时存在。
在MyBatis进行查询映射时,其实查询出来的每一个属性都是放在一个对应的Map里面的,其中键是属性名,值则是其对应的值。
①当提供的返回类型属性是resultType时,MyBatis会将Map里面的键值对取出赋给resultType所指定的对象对应的属性。所以其实MyBatis的每一个查询映射的返回类型都是ResultMap,只是当提供的返回类型属性是resultType的时候,MyBatis对自动的给把对应的值赋给resultType所指定对象的属性。
②当提供的返回类型是resultMap时,因为Map不能很好表示领域模型,就需要自己再进一步的把它转化为对应的对象,这常常在复杂查询中很有作用。

一、ResultMap
当返回类型直接是一个ResultMap的时候也是非常有用的,这主要用在进行复杂联合查询上,因为进行简单查询是没有什么必要的。先看看一个返回类型为ResultMap的简单查询,再看看复杂查询的用法。

①简单查询的写法

<resultMap type="Blog" id="BlogResult">  
        <id column="id" property="id" />  
        <result column="title" property="title" />  
        <result column="content" property="content" />  
        <result column="owner" property="owner" />  
    </resultMap>  
    <select id="selectBlog" parameterType="int" resultMap="BlogResult">  
        select *  
        from t_blog where id = #{ 
   id}  
    </select>  

Jetbrains全家桶1年46,售后保障稳定

select映射中resultMap的值是一个外部resultMap的id,表示返回结果映射到哪一个resultMap上,外部resultMap的type属性表示该resultMap的结果是一个什么样的类型,这里是Blog类型,那么MyBatis就会把它当作一个Blog对象取出。resultMap节点的子节点id是用于标识该对象的id的,而result子节点则是用于标识一些简单属性的,其中的Column属性表示从数据库中查询的属性,Property则表示查询出来的属性对应的值赋给实体对象的哪个属性。简单查询的resultMap的写法就是这样的。
基本映射 :(resultType)使用resultType进行输出映射,只有查询出来的列名和实体类中的属性名一致,该列才可以映射成功。(数据库,实体,查询字段,这些全部都得一一对应)
高级映射 :(resultMap) 如果查询出来的列名和实体类的属性名不一致,通过定义一个resultMap对列名和实体类属性名之间作一个映射关系。(高级映射,字段名称可以不一致,通过映射来实现

resultMap
constructor - 类在实例化时,用来注入结果到构造方法中
	idArg - ID 参数;标记结果作为 ID 可以帮助提高整体效能
	arg - 注入到构造方法的一个普通结果
id – 一个 ID 结果;标记结果作为 ID 可以帮助提高整体效能
result – 注入到字段或 JavaBean 属性的普通结果
association – 一个复杂的类型关联;许多结果将包成这种类型
	嵌入结果映射 – 结果映射自身的关联,或者参考一个
collection – 复杂类型的集
	嵌入结果映射 – 结果映射自身的集,或者参考一个
discriminator – 使用结果值来决定使用哪个结果映射
	case – 基于某些值的结果映射
		嵌入结果映射 – 这种情形结果也映射它本身,因此可以包含很多	相同的元素,或者它可以参照一个外部的结果映射。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/215537.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • intellij idea 激活码[免费获取]

    (intellij idea 激活码)最近有小伙伴私信我,问我这边有没有免费的intellijIdea的激活码,然后我将全栈君台教程分享给他了。激活成功之后他一直表示感谢,哈哈~IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.htmlML…

    2022年3月21日
    126
  • OpenCV里IplImage的widthStep参数

    OpenCV里IplImage的widthStep参数昨儿在Moto写程序时遇到的问题.当时是要切人脸图片,比较谨慎,做完了想看一下切的效果就写了个程序显示出来,结果很令人诧异,就试了六幅图结果有五幅完全不对头,都产生了错位,每行错开一点,最后看不出来是人脸了…这下烦了,要是自己写的那个切割工具出问题的话,那眼花缭乱的切了两个多小时的工作都白费了,没办法,找原因吧.又仔细的切了几幅,还是不行,奇怪的是有个别图像显示是正确的.其实工作很简单,就是从一幅

    2022年5月28日
    31
  • activiti流程引擎_发动机的主要结构是什么

    activiti流程引擎_发动机的主要结构是什么https://blog.csdn.net/LiMing_0820/article/details/113247459

    2022年10月30日
    0
  • 由中序遍历和后序遍历还原二叉树_二叉树的中序列

    由中序遍历和后序遍历还原二叉树_二叉树的中序列二叉树的前序遍历、中序遍历和后序遍历之间还原二叉树1、概念(1)前序遍历   a、访问根节点;b、前序遍历左子树;c、前序遍历右子树。(2)中序遍历   a、中序遍历左子树;b、访问根节点;c、中序遍历右子树。(3)后序遍历   a、后序遍历左子树;b、后续遍历右子树;c、访问根节点。2、前序遍历和中序遍历还原二叉树思想如下:  a、根据前序遍历结果,第一个元素为二叉树的根结…

    2022年9月14日
    0
  • opencv 视频实时处理_opencv 控制摄像头

    opencv 视频实时处理_opencv 控制摄像头最近研究了通过OpenCV采集摄像头数据,并同时将视频流数据推送到RTSP和RTMP。RTSP服务采用开源的LIVE555(需要自己修改和实现部分代码)。RTMP服务采用开源CRtmpServer。

    2022年10月21日
    0
  • 5500xt挖矿算力_rx470d etc算力

    5500xt挖矿算力_rx470d etc算力…每日平均收益为R$4。RX5700XT表现出色的其他加密货币包括:以太坊经典(ETC),拉文币(RVN),天堂协议XHV和Beam(BEAM)。可以用于采矿的同一系列图形卡中的其他型号是RX5700,RX5600XT和RX5500XT。但是,与RX5700XT相比,这些其他型号的利润率较低。NvidiaRTX2060超级频率:1470MHz至1670MHzV…

    2022年6月14日
    82

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号