springboot之resultTyperesultMap的正确打开方式超级详细
Posted bug菌¹
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了springboot之resultTyperesultMap的正确打开方式超级详细相关的知识,希望对你有一定的参考价值。
👨🎓作者:bug菌
💌公众号:猿圈奇妙屋
🚫特别声明:原创不易,转载请附上原文出处链接和本文声明,谢谢配合。
🙏版权声明:文章里可能部分文字或者图片来源于互联网或者百度百科,如有侵权请联系bug菌处理。
一、环境说明🔥
环境:springboot 2.3.1.REALSE + mybatis-plus 3.2.0 + jdk1.8 + mysql 5.6
二、文章概述🔥
今天,我要给大家讲一个我因前几天遇到的一个bug,由此为灵感而想跟大家分享这个东西,既专写一篇关于[ 如何正确使用resultType/resultMap ]的文章,具有很好的入门教学,希望能帮助更多小伙伴💯,不会因它们而犯低级错💥。
废话不多说,咱们就开始这期的内容教学内容吧😳。
三、正文🔥
我们都非常熟悉,日常使用 mybatis 在进行select查询映射的时候,返回类型既可以用resultType,也可以用resultMap。这两啥时候分别啥时候用?这二者究竟又有啥同异呢?这些问题小伙伴们有思考过么?如果没有,那么也没关系,今天我来给大家进行一一解惑。
我们先从mybatis官网文档中,了解到对resultType/resultMap 是这么描述的:
- ResultType:从这条语句中返回结果的类全限定名或别名。 注意,如果返回的是一个集合,那resultType设置为集合包含的类型,而不是集合本身类型。
- ResultMap: 对外部 resultMap 的命名引用,就是映射实体类的数据类型。
提示:经测试,同一个select查询,resultType 和 resultMap 二者也可以同时使用。但不推荐啊,一般都是选其一使用即可,因为没必要同时使用。(为什么要做这么个测试呢?目的是为了验证我看到网上某一博主提出的一个二者不能同时使用的观点!经测试,这是不对的,二者可以同时使用。)
具体测试演示截图如下:
1️⃣resultType
resultType可以直接为返回的值类型进行定义,比如给定为String、int、double、float、long、Map等数据类型;列举如下:
<select id="findAllProfessionalGroup3" resultType="int">
</select>
<select id="findAllProfessionalGroup3" resultType="String">
</select>
其中返回的List也是将返回类型定义为Map,然后mybatis会自动将这些map存放到一个List中,dao层用可用Map接收。
<select id="findAllProfessionalGroup3" resultType="Map">
</select>
还有resultType也可以是一个对象,举例如下:
<select id="findAllProfessionalGroup3" resultType="com.example.review.vo.UserInfoVo">
</select>
其中resultType指定的是返回该对象的相对地址,比如你参考下我的项目中UserInfoVo对象的目录地址,你就会明白了,大家请看:
切记,如果你是使用 resultType指定一个对象时,即要求你的sql查询语句查询出的字段在相应的pojo中必须有和它相同的字段对应。但是,如果列名没有精确匹配,你也可以在查询字段上定义别名(sql 的as 用法可以了解一下)。
具体请参考我的演示:
如果没有字段名对应,sql查询不会报错,也会正常返回该对象,但是对象整体都为空。不信的小伙伴可以自己去测试一下。我是返实测返回一个list<XxxVo> res,但是debug看到该res显示All elements are null。
具体大家请看截图:
2️⃣resultMap
而resultMap呢,其实也与resulttype定义对象很pojo很类似,为什么这么说呢?因为它只适合使用返回值是自定义实体类的情况。
其中resultMap标签解析:
- id:为 resultMap标签在Xxxmapper.xml文件中的唯一标识。比如:BaseResultMap1
- type:最终要映射的实体类pojo。比如:FindByProfessionalGroupTopFiveVo。
- column: 库表的字段名。比如:professional_group、job_number。
- property:实体类pojo里的属性名。比如:professionalGroupName、accountId。
... ...
好啦,以上就是这期文章的所有内容啦。如果对你有所帮助,还请不要忘记给bug菌[三连支持]哟。如果想获得更多的学习资源或者想和更多的技术爱好者一起交流,可以关注我的公众号『猿圈奇妙屋』,后台回复关键词领取学习资料、大厂面经、面试模板等海量资源,就等你来拿。
四、文末🔥
如果你还想要学习更多,小伙伴们大可关注bug菌专门为你们创建的专栏《springboot零基础入门教学》,都是我一手打下的江山,持续更新中,希望能帮助到更多小伙伴们。
我是bug菌,一名想走👣出大山改变命运的程序猿。接下来的路还很长,都等待着我们去突破、去挑战。来吧,小伙伴们,我们一起加油!未来皆可期,fighting!
最后送大家两句我很喜欢的话,与诸君共勉!
☘️做你想做的人,没有时间限制,只要愿意,什么时候都可以start。
🍀你能从现在开始改变,也可以一成不变,这件事,没有规矩可言,你可以活出最精彩的自己。
💌如果文章对您有所帮助,就请留下您的赞吧!(#^.^#);
💝如果喜欢bug菌分享的文章,就请给bug菌点个关注吧!(๑′ᴗ‵๑)づ╭❤~;
💗如果对文章有任何疑问,还请文末留言或者加群吧【QQ交流群:708072830】;
💞鉴于个人经验有限,所有观点及技术研点,如有异议,请直接回复参与讨论(请勿发表攻击言论,谢谢);
💕版权声明:原创不易,转载请附上原文出处链接和本文声明,版权所有,盗版必究!!!谢谢。
以上是关于springboot之resultTyperesultMap的正确打开方式超级详细的主要内容,如果未能解决你的问题,请参考以下文章