zoukankan      html  css  js  c++  java
  • MyBatis中关联查询的两种方式

    本文转载自:https://blog.csdn.net/z_ssyy/article/details/81706876

    Mybatis关联查询的两种方式

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

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

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

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

    *Mybatis的yanc延迟加载配置

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

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

    1一对一

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

    2.一对多

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

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

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

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

     

    3.多对多

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

    所以就不在累赘了

    总结:这两种方式各有各的优缺点,嵌套查询的查询语句写起来简单,但是执行的sql语句多,性能要低一点,嵌套结果的查询语句写起来难一点,而且sql语句只执行一条,性能相对较高;刚开始用可能会遇到很多细节问题,但是慢慢熟悉了,感觉就会好很多,用起来也得心应手了
    ————————————————
    版权声明:本文为CSDN博主「六月·飞雪」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/z_ssyy/article/details/81706876

  • 相关阅读:
    单向链表的创建、输出、插入、删除
    linux文件管理指令
    二叉树的创建与遍历(递归)
    小工具
    排序
    Project Euler Problem (1~10)
    福大软工 · 最终作业
    福大软工 · 第十二次作业
    Beta冲刺 7
    Beta冲刺 6
  • 原文地址:https://www.cnblogs.com/xie-qi/p/13244242.html
Copyright © 2011-2022 走看看