范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

2K字详解MyBatis中核心要点SelectresultType和resultMap

  MyBatis常用动态标签大全见上述URL,它们大概分为如下四类:
  标签
  作用
  使用场景
  foreach
  循环语句
  批量添加或者批量查询
  if
  条件判断语句
  单条件分支判断
  choose、when、otherwise
  类似 Java 中的 switch、case、default 语句
  多条件分支判断
  trim、where、set
  辅助标签
  用于处理一些条件查询
    在MyBatis中有一个ResultMap标签,它是为了映射select标签查询出来的结果集,其主要作用是将实体类中的字段与数据库表中的字段进行关联映射。 前言
    Mybatis 中 select 标签有两个属性 resultType 和 resultMap,用于在mapper.xml文件中配置返回结果类型,工作中经常使用到它们。那么在日常开发中,应该如何正确的选择呢?下面我们对这两个属性分别进行讲解和演示。 结果类型resultType
    resultType直译就是结果的类型,可以设置为期望从select 语句中返回结果的类的 全限定名 或 别名 。resultType使用场景如下:
    如果查询结果只是返回一个值,比如返回String、map或int,那么可以使用resultType指定简单类型作为输出结果。
    我们先了解一个resultType的简单映射语句示例,它没有显式地指定  resultMap  。比如:     id, username, hashedPassword  
    上述语句只是简单地将所有的列映射到  HashMap   的键上,这由 resultType   属性指定。此处对查询字段用了一个 sql 标签进行封装,该sql 片段可复用。
    还有一种情况就是如果数据库表的字段名和实体bean对象的属性名一样。 虽然在大部分情况下都够用,但是 HashMap 并不是一个很好的领域模型;你的程序更可能会使用 JavaBean 或 POJO(普通老式 Java 对象)作为领域模型,MyBatis 对两者都提供了支持。看看下面这个 JavaBean: package com.someapp.model; public class User {   private int id;   private String username;   private String hashedPassword;   // omit getter,setter and toString }
    基于 JavaBean 的规范,上面这个类有 3 个属性:id,username 和 hashedPassword,它们会对应到 select 语句中的列名。这样的一个 JavaBean 可以被映射到  ResultSet  ,就像映射到 HashMap   一样简单。
    类型别名是你的好帮手,关于如何设置类型别名,请移步《Spring Boot MyBatis使用type-aliases-package自定义类别名》。使用别名后就可以不用输入类的全限定名了。譬如: 
    在此情况下,MyBatis 会在幕后自动创建一个  resultMap  ,再根据属性名来映射列到 JavaBean 的属性上。如果列名和属性名不能匹配上,可以在 SELECT 语句中设置列别名(这是一个基本的 SQL 特性)来完成匹配。例如:     user_id             as "id",     user_name           as "userName",     hashed_password     as "hashedPassword"  
    注意,如果返回的是集合,那应该设置为集合包含的类型,而不是集合本身的类型。 结果映射resultMap
     resultMap   直译就是结果映射,该元素是 MyBatis 中最重要最强大的元素。与 resultType 相比,resultMap就要强大许多,它不仅能够用于简单查询,还能用于级联查询以及设置缓存,功能可谓是十分的强大。它可以让你从 90% 的 JDBC ResultSets   数据提取代码中解放出来,并在一些情形下允许你进行一些 JDBC 不支持的操作。实际上,在为一些比如连接的复杂语句编写映射代码的时候,一份 resultMap   能够代替实现同等功能的数千行代码。ResultMap 的设计思想是,对简单的语句做到零配置,对于复杂一点的语句,只需要描述语句之间的关系就行了。温馨提示:resultType 和 resultMap 之间只能同时使用一个。resultMap标签属性
    resultMap 标签的属性值包括两个:
  id 属性 :唯一标识,此 id 值用于 select 标签 resultMap 属性的引用。
  type 属性 :表示该 resultMap 的映射结果类型,可以为类的全限定名或者别名。
    resultMap子标签包括如下几个 :
  子标签
  功能
  备注
  id
  指定查询列中的唯一标识,如果有多个列组成唯一标识,配置多个id
  可以不用
  result
  用于标识一些简单属性,包括column和property两个属性
  常用
  association
  在主表的pojo中嵌套另一个表的pojo
  不推荐使用
  collection
  把查询到的多条记录映射到集合对象
  不推荐使用
    result标签的属性包括两个: column :数据库字段名或别名。 property :实体类中的属性,和column属性一一对应。 resultMap使用示例
    下面使用一个简单的例子,来介绍 resultMap 的使用方法。虽然上一节中的例子不用显式配置  resultMap  ,但为了讲解,我们来看看如果显式使用外部的 resultMap   会怎样;这也是解决列名和bean名不匹配的另外一种方式。定义一个resultMap:          
    然后在引用它的语句中设置  resultMap   属性就行了(注意我们去掉了 resultType   属性)。比如: resultType和resultMap的区别
    下面了解一下MyBatis中数据转换机制:在进行查询映射的时候,其实查询出来的每一个属性都是放在一个对应的Map里面,其中键是属性名,值则是其对应的值。当提供的返回类型属性是resultType的时候,MyBatis会将Map里面的键值对取出赋给resultType所指定的对象对应的属性。所以,其实MyBatis的每一个查询映射的返回类型都是ResultMap,只是当我们提供的返回类型属性是resultType的时候,MyBatis自动的把对应的值赋给resultType所指定对象的属性,而当提供的返回类型是resultMap的时候,因为Map不能很好表示领域模型,我们就需要自己把它转化为对应的对象,这常常在复杂查询中很有作用。
    言归正传,resultType和resultMap到底有什么区别呢?
     resultType不需要配置,但是resultMap要配置一下 。resultType是直接指定返回类型的,而使用resultMap时,需要在外部ResultMap标签中,设置数据库表的字段名和实体bean对象类的属性的一一对应关系。设置后,就算数据库的字段名和实体类的属性名不一样也没有关系,mybatis依然会给映射出来,所以resultMap要更强大一些。
    就像上面说的那样,如果查询出来数据库字段名(包括字段别名)和要封装的实体bean对象属性值不相同时,只能使用resultMap来返回结果。
    还有一个区别是 resultMap可以用在复杂联合查询上,而resultType不可以 。关于这一点,大家可以去Mybatis官网了解一下,这里点到为止。 结束语
    至此,大家已经了解了resultType和resultMap的基本用法,在日常业务开发中已经可以游刃有余了。如果想更上一层楼,掌握更多关于resultMap的高级用法,请移步Mybatis官网。
    当你遇到这个话题的时候,你通常怎么理解呢?你碰到过特别精彩、让人印象深刻的回答吗?欢迎大家积极留言交流。

明天三九,记得吃1肉忌2味食3根,补足营养,顺利过寒冬导读2022年的1月8日1月16日是数九寒天中的三九,俗话说冷在三九,热在三伏,意思是三九天是一年中最冷的时候,所以在寒冷的三九天时,我们一定要补足营养,这样才能使我们顺利的度过一今年火了一种穿法,叫大衣碎花裙,甜美温柔又有气场,太美说到聚会,就不得不提参加聚会时的穿搭了。这其中的小玄机也是非常多的,如果你不想成为聚会中的小透明,一定要认真看完下面的内容哦和好久不见但关系还不错的朋友见面时,我们的穿搭一定要恰到特朗普小女儿在法国滑雪!穿1万6的羽绒服好显胖,比伊万卡差远了特朗普一家最近似乎都在度假,伊万卡一家五口在迈阿密海边各种嗨皮,特朗普和梅拉尼娅在海湖庄园过新年,特朗普的前妻玛拉和女儿蒂芙尼在法国滑雪,蒂芙尼是特朗普的小女儿,平时没有伊万卡那么自信漂亮的鲨鱼裤装扮尽显甜美风格,气质女生都爱穿,又仙又美鲨鱼裤的搭配难题接踵而至,很多妹子在选择白色鲨鱼裤的时候经常会选择经典黑色低饱和度的蓝色灰色等,但是这些颜色接近大地色系,显得气色很差。颜色太浅,容易与全身的色彩冲突,显得人很局促冬奥大看台自由式滑雪汇聚最有创意的雪上艺术家冬奥会比拼的是什么?有比竞速的,有比技巧的,有比综合的,而自由式滑雪就是典型的技巧类比赛项目。自由式滑雪是从高山滑雪的基础上发展而来,运动员在不同的场地上展现着华丽的技巧和娴熟的技苏神的体育课,你上过吗?东京奥运会,亚洲飞人苏炳添凭借9秒83的成绩刷新男子100米的亚洲纪录,赢得了全世界的掌声。和苏炳添一样,小米,正凭借着强大的实力和出色的表现,在全世界掀起橙色的热浪。2021年125岁本土国脚获亚足联点名表扬,重要性不输归化,战日本有望首发随着中超联赛的落幕,球员们的重心要再一次转向国家队。不久之后,新一期的国家队就将集结,他们将带着冲击世界杯的目标再次上路。虽然国足现在已经只剩下了理论上的出线希望,但我们也绝不能提31岁小库里爆发!娶NBA名帅女儿,身材不输阿耶莎,1家4口幸福北京时间1月6日,NBA常规赛焦点战,76人客场迎战魔术,此役,库里的兄弟赛斯库里表现格外抢眼,他出战41分钟,13投8中,其中三分球5投3中,疯狂拿下20分7篮板12助攻1抢断的佩林卡终于醒悟?即将交易两将,正式放弃小乔丹!勇士悍将也走人最近12年,佩林卡在湖人的操作可以说引起了许多湖人球迷的吐槽,比如争冠赛季之后拆散阵容,上赛季又接连引进一些名过其实的球员,还给予了庄神施罗德上场时间,导致队内的化学反应全无,本赛被飞儿乐队踢走的主唱,时隔4年终于翻身了今年的跨年晚会,和往年有些许不同。没有翻车现场,也没有各种流量乱炖局面,倒显得有几分无趣了。果然,现在的晚会越来越枯燥乏味了。不过,少了翻车现场的晚会,才是最考验人的。因为我就要在陈小春用尽毕生找不回被3000元卖掉的亲弟弟,身价上亿又有何用如果你真的有种的话,就到波澜街去闯一闯。这是香港电影古惑仔中,山鸡哥曾经说过的一句台词。1980年,13岁的陈小春辍学,跟着父亲泅水来到香港谋生。初到香港,举目无亲,父子二人一个工
世预赛征程结束中国男篮为世界杯冲刺程帅澎两分入网香港荃湾体育馆内一阵欢呼中国男篮26日在主场战胜伊朗以总成绩10胜2负结束了2023男篮世界杯亚大区预选赛2月26日,中国队球员周琦(左)在比赛中跳球。当日,中国队以三大球男女世界排名和亚洲最新排名榜!中国呈现阴盛阳衰势态在体育竞技项目中,三大球(篮球排球足球)是关注度最广影响力最大受众人数最多的体育项目。三大球运动在中国的发展不是很顺利,可以说呈现出一种阴盛阳衰的发展势态。下面就男女三大球的世界排把遗憾化作动力,新赛季更上一层楼专访中国首位F1正式车手周冠宇新华社上海2月25日电(记者许东远)2022赛季,中国首位一级方程式赛车(F1)正式车手久事体育签约车手周冠宇共拿下6个积分,当选Autosport年度最佳新秀奖。阿尔法罗密欧车队中国比特币首富的屌丝逆袭之路李笑来,中国比特币首富,曾经手握10万枚比特币,在我国宣布对比特币交易途径进行关闭时,他及时套现135亿,实现了财富自由,那么,他又是怎样逆袭的呢?李笑来,吉林人,1972年生人,十八岁的季节十八岁的季节文龙秀芳十八岁的你在如诗如画的季节里走着走着花就开了从这个清晨开始努力从这个春天开始启程相信一切皆有可能当你全心全意梦想着整个宇宙都会助力帮你实现成人后的愿望十八岁的你因果人生中的因果关系是我们不可避免的经历,它意味着我们的每一个行为都会产生相应的后果。我们的每一个决定每一个选择都将影响我们未来的命运。因果关系是一个充满深度和复杂性的主题,它涵盖了我气场不强,不外乎这四个原因一个人的性格气质素养等所形成的个人魅力和影响力,是一种自内而外散发的无形力量,就是我们所说的气场。有的人朴质无华却魅力四射,有的人不怒自威而令人敬畏,有的人陷于困境而不失骨气,有的能治愈你的除了时间,还有春日一盏清茶!风拂过,茶香扑鼻一抹绿色,是春天的宣言一朵茶芽,是春天的奏曲一杯清茗,是春天的味道一缕清香,以此静心春风啜茗时也许就是与好友同品春茶的绝佳解释,美好的季节总是让人心生美好的向往。约开窍小时候,妈妈说我脑子不开窍,上学时老师说我不开窍我是什么时间,什么地点找到自己的?当我面对这个直观的问题,我茫然不知所措,步入社会,现实生活中也是如此,譬如男人背负着事业和家庭的责一种回忆年少时对什么都很好奇,总想着自己可以去到一个陌生的地方,去见识不一样的东西。当真的开始流浪了,从一个城市到另一个城市,在穷困而陌生的环境里,大多时候会觉得很难过。游戏里遇到个玩伴说兰州高新区双创企业让地下管线都有身份铭牌图为2019年,兰州壹杰华安信息科技有限公司向兰州大学捐赠130万元。(资料图)受访者供图中新网甘肃新闻2月27日电(刘延新)公司迈出技术转型的第一步,要从高校信息化建设说起。当时