Mybatis——Mapper.xml中查询相关配置的归纳

再次阅读了Mybatis官方文档,感觉在自己上手实际项目的情况下能更加容易地理解这份文档,也许是翻译质量不太高的原因,我个人认为这份文档是极不适合初学者将其作为入门资料学习的,这文档其实就是一篇夹杂详细说明的API,我想应该没人通过读API来入门吧。

回归正题,今天我在按教程写练手项目时又遇见了开始接触Mybatis时未曾解决的问题——为何要用实体对象的包装类,这个问题比较大,当时只是照葫芦画瓢,草草按教程的写法写完了事,现在从此问题又引发了一些其他基础问题——配置文件中有关包装类的resultMap标签及其associate、collection子标签的作用是什么,下面一个个归纳。

一、为何要用实体对象的包装类
现在我还无法解决该问题,网上千篇一律地说是根据业务需要,这么些有更好的拓展性,但我目前遇到的业务场景较为简单,用与不用没有差别,用了反而在Mapper.xml中需要额外配置,并令文件内容变得复杂,今后遇到了更复杂的业务需求再来更新这部分内容。

二、resultMap标签

这个配置若不手动显性写出Mybatis也是隐形配置有的,其作用就是把数据库查询结果映射到实体类上(高端的说法:领域模型),
显性写出的resultMap

若不写出,Mybatis会自动查找与数据库列名对应的实体类属性名并以上图方式实现映射(Mybatis默认的命名法:数据库列名为以“-”分隔的单词,实体类属性名为以驼峰命名法创造的单词),若无法找到对应的列名则映射的实体相关属性值为null。当属性名和列名不对应,可手动写出,除了这个用法,它还可以根据业务映射未与数据库表对应的实体类,如数据库表记用id关联其他表记录,但是实体类的属性为其他类或一个集合(传说中的一对一,一对多),需要用到associate和collection标签。

三、associate标签(关联)

映射一个以另一个实体类作为属性的实体类,需要查询出作为属性的实体类的自身相关信息,当配置其他属性后,可实现相当强大的映射功能
关联的查询嵌套,对于涉及大量数据的查询操作性能较差

关联的结果嵌套,可以实现重用部分resultMap的效果

但是当仅仅需要映射一个以另一个实体类作为属性的实体类时无须使用该标签,只要在实体类中配置相关属性,并写上get方法,在Mapper.xml中查询出相关实体类的对应列的值即可完成自动映射。
四、collection标签(集合)

用于映射具有一对多关系的实体类(该类为“一”,其集合属性为“多”)
集合的嵌套查询,与关联相似,其中的javaType可省略

集合的嵌套结果
有重用效果的集合嵌套结果
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1. 简介 1.1 什么是 MyBatis ? MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的...
    笨鸟慢飞阅读 11,216评论 0 4
  • 文/财管1652顾宇遥 她是一个女性,女性的天空是低的,羽翼是是稀薄的。她要飞,但同时又害怕自己掉下来。她是萧红,...
    梅凤阅读 4,005评论 0 0
  • 今天可谓是一个高兴的日子,昨晚上美术老师发来贺信说女儿获得日照市儿童画三等奖,真的是出乎我们的意料。我和孩子爸...
    假装自己是仙女阅读 1,094评论 1 1
  • 总想回到青春年华,十七八岁,再去体会那无所畏惧,激情洋溢,无所不能的时光。 这样的人群大抵如此:规矩上学,毕业工作...
    圆圆心理阅读 2,629评论 0 4
  • 月在碧空照, 人在他乡漂。 酒中思故友, 举杯万里邀。
    简村小吹阅读 1,783评论 10 16

友情链接更多精彩内容