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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 线性代数投影矩阵的定义_线性代数a和线性代数b

    线性代数投影矩阵的定义_线性代数a和线性代数bAbout投影矩阵  一个矩阵AAA既可以表示一种线性变换,又可以是一个子空间(由基张开的),还可以是一组坐标,甚是神奇。文章目录About投影矩阵一维空间的投影矩阵投影矩阵的多维推广投影的物理意义信号处理中的正交投影技术一维空间的投影矩阵  查看上图,ppp是bbb在aaa上的投影,可以发现,ppp和aaa是同向的,故可以表示为如下形式,其中xxx是标量p=axp=axp=ax  根据eee和ppp正交的条件,可以推导出x=aTbaTax=\frac{a^Tb}{a^Ta}x=aTaaT

    2022年10月4日
    2
  • 精雕软件怎么把图片转成灰度图_bmp灰度图怎么转精雕浮雕图和做刀路?[通俗易懂]

    精雕软件怎么把图片转成灰度图_bmp灰度图怎么转精雕浮雕图和做刀路?[通俗易懂]1、文件–输入–点阵图像(选择灰度图,bmp格式的)2、绘制–绘制出一个你需要做的图案的形状,注意计算比例尺3、用你绘制的图形来截取灰度图,截取你要的图案部分,截取的部分就是你要做出来的路径部分,如果要用到好几张图的元素的话你就多导入几张图,然后拼接图案。做的过程中可以切换显示模式来看看渲染的效果。4、艺术曲面–图像纹理–位图转网格–图形聚中5、刀具路径–路径向导–根据你的各种不同…

    2022年6月20日
    42
  • 查看linux内核版本号_查看linux系统内核信息命令

    查看linux内核版本号_查看linux系统内核信息命令如何得知自己正在使用的linux是什么版本1.查看内核版本命令:1)[root@q1test01~]#cat/proc/versionLinuxversion2.6.9-22.ELsmp(bhcompile@crowe.devel.redhat.com)(gccversion3.4.420050721(RedHat3.4.4-2))#1SMPMonSep19…

    2022年10月13日
    3
  • 整型与字符串转换

    整型与字符串转换我们写程序的时候经常会遇到整型和字符串相互转换的问题,这里要用到几个函数,itoa(),atoi(),sprintf()下面来介绍下这几个函数的具体用法!itoa功能:把一整数转换为字符串用

    2022年7月2日
    29
  • 说说我的考研之路-初试复习经验

    说说我的考研之路-初试复习经验2015考研初试复习经验一、“考研”的基本情况研究生入学考试一般是在前一年的10月份报名,然后在当年的1月份进行初试(2015年例外,提前到了2014年的12月底),初试一般为期两天(有的专业可能3天)。初试成绩一般在初试后一个半月前后可以查询,再接下来34所自主划线院校会陆续公布自己的分数线,随后国家线公布。考研的复试与调剂阶段陆续开始了。考研的科目,一般都是四门,考政治、外语、业务

    2022年6月3日
    37
  • zigbee协议栈工作流程 From zigbee菜鸟笔记(十 一)

    zigbee协议栈工作流程 From zigbee菜鸟笔记(十 一)一.ZigBee协议栈简介什么是ZigBee协议栈呢?它和ZigBee协议有什么关系呢?协议是一系列的通信标准,通信双方需要共同按照这一标准进行正常的数据发射和接收。协议栈是协议的具体实现形式,通俗点来理解就是协议栈是协议和用户之间的一个接口,开发人员通过使用协议栈来使用个协议的,进而实现无线数据收发。ZigBee的协议分为两部分,IEEE802.15.4定义了PHY(物理层)和MAC(介质访问层)技术规范;ZigBee联盟定义了NWK(网络层)、APS(应用程序支持子层)、APL(应用层

    2022年5月28日
    45

发表回复

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

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