Mybatis中关联查询讲解

首先要了解对象的三种关联方式

*数据库表的关联关系有三种,一对一,一对多,多对多
一对一   是通过在任意一方的主键,引入对方主键作为外键来实现的,就是说主键与外键为同一字段
一对多   是通过在“多”的一方,添加“一”的一方的主键作为外键
多对多   是通过一张中间关系表,引入两张表的主键作为外键,两个主键成为联合主键或使用新的字段作为主键

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

三种关联guan关系都有两种关联查询的方式,嵌套查询,嵌套结果

*Mybatis的yanc延迟加载配置

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

 
  1. <settings>

  2. <setting name="lazyLoadingEnabled" value="true" />

  3. <setting name="aggressiveLazyLoading" value="false"/>

  4. </settings>

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

1一对一

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

2.一对多

<resultMap>元素中,包含了一个<collection>子元素,MyBatis就是通过该元素来处理一对多关联关系的

<collection>子元素的属性大部分与<association>元素相同,但其还包含一个特殊属性--ofType

ofType属性与javaType属性对应,它用于指定实体对象中集合类属性所包含的元素类型。

<collection >元素的使用也非常简单,同样可以参考如下两种示例进行配置,具体代码如下:

3.多对多

多对多的关联关系查询,同样可以使用前面介绍的<collection >元素进行处理(其用法和一对多关联关系查询语句用法基本相同)

所以就不在累赘了

总结:这两种方式各有各的优缺点,嵌套查询的查询语句写起来简单,但是执行的sql语句多,性能要低一点,嵌套结果的查询语句写起来难一点,而且sql语句只执行一条,性能相对较高;刚开始用可能会遇到很多细节问题,但是慢慢熟悉了,感觉就会好很多,用起来也得心应手了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值