Mybatis学习总结第四课----关联查询(两种关联查询方式)

        在关系型数据库中,我们经常要处理一对一 、 一对多的关系 。 例如, 一辆汽车需要有一个引擎,这是一对一的
关系。 一辆汽车有 4 个或更多个轮子,这是一对多的关系 。关联元素就是专门用来处理关联关系的。

在java类中关联关系也有三种,一对一,一对多,多对多
    一对一   在本类中定义对方类型的对象,如A类中定义B类类型的属性b,B类中定义A类类型的属性a
   一对多   一个A类类型对应多个B类类型的情况,需要在A类中以集合的方式引入B类类型的对象,在B类中定义A类类型的属性a
   多对多   在A类中定义B类类型的集合,在B类中定义A类类型的集合

 

   一 、两种关联方式

     嵌套结果:使用嵌套结果映射来处理重复的联合结果的子集
     嵌套查询:通过执行另外一个 SQL 映射语句来返回预期的复杂类型

        对于嵌套查询可以使用懒加载方法实现优化

   *Mybatis的延迟加载配置

   在全局配置文件中加入下面代码

<settings>
<setting name="lazyLoadingEnabled" value="true" />
<setting name="aggressiveLazyLoading" value="false"/>
</settings>

   在映射文件中,<association>元素和<collection>元素中都已默认配置了延迟加载属性,即默认属性fetchType="lazy"(属性fetchType="eager"表示立即加载),所以在配置文件中开启延迟加载后,无需在映射文件中再做配置

 

二 、具体分析

   2.1 一对一关系查询  <association>标签

      使用<association>元素进行一对一关联映射非常简单,只需要参考如下两种示例配置即可

            

下面使用一个例子来验证。有两个对象,一个为员工、一个为职位。员工对象中包含职位 为一对一关系。

public class TUser {
    private Integer id;
    private String userName;
    private String realName;
    private Byte sex;
    private String mobile;
    private String email;
    private String note;
    private Integer positionId;
    //职位
    private TPosition position;
}
public class TPosition {
    private Integer id;
     //职位
    private String postName;
    private String note;
}

嵌套结果

<resultMap id="BaseResul
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值