转载

一文理清Mybatis中resultType与resultMap之间的关系和使用场景

点击蓝色“ 程序猿DD ”关注我

回复“ 资源 ”获取独家整理的学习资料!

1.概述

Mybatis ORM半自动映射框架对java开发工程师来说应该是必会的框架之一。 它的好处这里不是我们讨论的重点。 令很多刚刚入行的java开发小伙伴迷茫的是 resultType与resultMap的使用。 今天来探讨一下这个问题。

2.resultType与resultMap

接下来我们就来讲一下Mybatis中resultType与resultMap之间的关系和使用场景。

2.1 resultType

从select语句中返回的期望类型的类的完全限定名或别名。 注意如果返回的是集合,那应该设置为集合包含的类型,而不是集合本身。 可以使用 resultType 或 resultMap,但不能同时使用。

2.2 resultMap

从这条语句中返回的期望类型的类的完全限定名或别名。 注意如果返回的是集合,那应该设置为集合包含的类型,而不是集合本身。 可以使用 resultType 或 resultMap,但不能同时使用。

2.3 共同点

resultType与resultMap首先都是用来归纳查询类型sql的结果集,对查询结果进行你需要的结构描述。 对于同一个select标签中二者不能共存。 这一点对很多人来说很好理解。 重要的是不同点和对应的使用场景。

2.4 二者分别的使用场景

对于查询结构需要返回的简单pojo,结果都可以映射到一致的hashMap上,换句话来说就是数据库列名可以精确匹配到pojo属性的。 一般都用resultType。 其实这里有一个隐含的构建机制。 映射到resultType的结果都是MyBatis在幕后自动创建了一个resultMap来处理的。 简而言之,只要resultType能干的事情resultMap都能干。 二者定位是:  

  • resultType用来处理非常简单的结果集,就是列名能够与pojo属性匹配的的结果集。 如果你只需要查询一个班级的简单情况,那么用这个再合适不过了。

一文理清Mybatis中resultType与resultMap之间的关系和使用场景  

我们很简单就可以使用下列操作:

一文理清Mybatis中resultType与resultMap之间的关系和使用场景

当然你也可以如上述所说使用resultMap:

一文理清Mybatis中resultType与resultMap之间的关系和使用场景  

然后将上面的resultType转换为resultMap即可,请注意我上面两种需要处理字段的驼峰风格,当然你可以设置Mybatis是否使用驼峰来进行规避。  

  • resultMap更擅长来处理复杂映射的结果集。 比如一对一、一对多的复杂关系。 如果你不但要查询一个班级的情况,附带需要查询班级所在的学校,班级学生的详细情况,甚至是班级男女学生概况。 就必须使用resultMap来描述这些映射关系了。 这个例子我们来写一下: 我们定义一个对上面关系描述的DTO:

一文理清Mybatis中resultType与resultMap之间的关系和使用场景

对应的映射处理:

一文理清Mybatis中resultType与resultMap之间的关系和使用场景  

当然resultMap还可以像java类一样继承。 总之,只要你想,这玩意儿你可以玩出花来。 但是注意性能问题,尽量不要过多的嵌套。 尽量配置延迟加载lazyLoadingEnabled以达到按需加载。

3. 总结

本文主要通过简单分析resultType与resultMap的相同点与不同点来阐明它们各自的使用场景。 更多详尽的使用方法可以去Mybatis的官方文档查看。 希望通过本文的讲解让你在实际开发工作中不再困惑更加明了。

留言交流不过瘾? 添加微信: zyc_enjoy

根据指引加入各种主题讨论群

每日一问

今日问题

一个屋子有一个门(门是关闭的)和3盏电灯。屋外有3个开关,分别与这3盏灯相连。你可以随意操纵这些开关,可一旦你将门打开,就不能变换开关了。确定每个开关具体管哪盏灯。

(留言说说你的答案吧,明日推文公布答案)

昨日答案

先让A分汤,B和C选,A拿剩下的那一份,再把B和C选的汤合起来,B分汤,C选,B拿剩下的那一份

(昨日问题可在 昨日推文 的文末查看)

推荐阅读

  • 攻破MySQL性能瓶颈必知的调优技巧

  • 如何模拟将CPU、IO打满?

  • Spring Cloud Alibaba 发布第一个正式版本,顺利完成孵化!

  • 用命令行在控制台里玩斗地主,试过没?

  • Spring Boot 面试的十个问题

签到计划

活动介绍 : 自律到极致-人生才精致:第11期

活动奖励:《 中台战略:中台建设与数字商业》

扫描下方二维码,查看 本书详情

一文理清Mybatis中resultType与resultMap之间的关系和使用场景

扫描下放二维码, 签到参与

一文理清Mybatis中resultType与resultMap之间的关系和使用场景

来星球聊聊技术人的斜杠生活

一文理清Mybatis中resultType与resultMap之间的关系和使用场景

点一点“ 阅读原文 ”小惊喜在等你

原文  http://mp.weixin.qq.com/s?__biz=MzAxODcyNjEzNQ==&mid=2247487976&idx=3&sn=626c621a1e2155f3ceaa560e2be3b67c
正文到此结束
Loading...