Mybatis 一对一,一对多,多对多查询

一对一查询:

可以使用resultType,针对的是简单查询,不需要关联查询另一方。

可以使用resultMap,涉及到关联查询就使用ResultMap,涉及到关联查询使用<assciation>标签

 

一对多查询:

例子:https://blog.csdn.net/qq_33561055/article/details/78861131

      使用<collection>标签

多对多查询:

例子:https://blog.csdn.net/liu_yanzhao/article/details/78573023

      提示:嵌套查询  <collection>标签里面再嵌套<collection>

      注意:多层嵌套可能造成资源浪费,我们可以使用延迟加载,让资源在使用时才去加载,这样可以提高数据库的性能。

      注意mybatis默认没有开启延迟加载,需要我们在配置文件中,手动配置开启延迟加载
                       <settings>
                             <!--延迟加载的全局开关 -->
                             <setting name="lazyLoadingEnabled" value="true" />
                             <!--积极加载的全局开关 -->
                             <setting name="aggressiveLazyLoading" value="false" />
                       </settings>

                1.延迟加载定义:
                      关联查询时,遇到暂时不需要的关联查询结果,选择先不去加载(延迟加载),待到需要使用时才去加载,这样可以大大提高数据库的性能。
           
                2.以下涉及关联查询的配置均可实现延迟加载,且都来自resultMap(resultMap才具备延迟加载的功能)
                        association:将关联的查询对象映射到单个的pojo中 
                        select: 子关联查询的Statement(sql)ID,如果statement不在当前mapper文件中配置,则需要加载其他mapper文件的namespace来指明引用来源
                        column: 关联查询过程中的外键列名
                        collection:  将关联的查询对象映射到多个的pojo中(集合) 

             
       3.离开mybatis框架如何实现延迟加载
                  1.其实很简单,我们只需要将关联查询拆分成两个简单查询,然后在service层内,按需设置调用即可。

补充:

       association:    将关联的查询对象映射到单个的pojo中
                  collection:  将关联的查询对象映射到多个的pojo中(集合) 
                  ofType:指定映射的集合属性中pojo的类型
                  resultMap标签中extends属性使用,可以查询结果映射的继承       
             

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值