• mybatis--对象关系映射细节详解


    对象关系映射

    在实际开发中,实体类之间有一对一、一对多、多对多的关系,所以需要正确配置它们对应关系,Mybatis通过配置文件能够从数据库中获取列数据后自动封装成对象。

    1.泛化关系--------->>(继承关系)

    2.实现关系 ----------->>>(实现关系)

    3.依赖关系 ----------------->>>(体现在某个A类引用另外一个B类作为A类的成员变量或者方法中)

    4.关联关系---->(重点)

    4.1关联关系----->>>>>>一对一(分为单向和双向)

    4.2关联关系------->>>>>多对一(单向)

    4.3关联关系------->>>>>一对多(单向)

    4.4关联关系------->>>>>一对多和多对一(双向)

    4.关联关系----------->>>>>>多对多

    5.聚合关系--------->>>(体现在一个A类中引用另外一个B类作为A类的成员变量中,缺少这个引用他不会出错)

    6.组合关系-------->>>>(体现在一个A类中引用量另外一个B类作为A类的成员变量,但是这个B类的引用是多个,比如是集合类型或者数组类型)

    以上就是对象映射关系的分类和详解,但是上面只是说了在程序中的关联关系,在下面再说一下这些映射关系在数据库设计表的时候,具体是怎么回事

    -------------------------------------------------------------------------------------------------------------------------

    1.泛化关系表的设计

    比如普通用户, 员工, 客户这三个表的设计, 分了三种设计思想: (1)直接共用一张表;需要加上一列用来区分不同类型   (2)每个子类设计一张表; 把普通用户设计成一个表, 由于员工和客户是普通用户的子类, 所以在普通用户表中会有所有人的字段,  但是由于员工他有salary列并且客户有address这个列, 因此使用普通用户表来存他们共有的字段, 然后再使用员工表和客户表来存储他们各自拥有的属性  (3)每个类简历一个表,这种比较容易理解,不用细说

    2.实现关系表的设计和依赖关系表的设计跟泛化关系表的设计雷同,省略

    3.关联关系表的设计

    3.1一对一

    3.2一对多(跟多对一表设计一样)

    4.3多对多表的设计

    引入另外一张表,把这两个表的主键存放在另一张表中

    5集合关系和组合关系表的设计是一致的,两个一块弄了

    ======================================================================================

    以上就是关联映射的细节详解,最重要的,难理解的就是关联关系的那部分,另外附关联关系中一对多或者多对一中在查询的时候会存在额外sql的问题的图的两种解决办法

     

    解决方案:

    1.是在查询的时候发送一条额外sql, 如下图

     2.使用内联映射,利用多表连接查询

     

  • 相关阅读:
    struts2简介
    HDU 2842 Chinese Rings(矩阵高速功率+递归)
    Cocos2d-X中国象棋的发展《五岁以下儿童》摆棋
    【Python注意事项】如何理解python中间generator functions和yield表情
    [CSS] Design for Mobile First with Tachyons
    [Angular] Configurable NgModules
    [Angular] Using useExisting provider
    [Angular] Providers and useFactory
    [Angular] Using InjectionToken
    [Angular] Test Directive
  • 原文地址:https://www.cnblogs.com/djma/p/12916043.html
Copyright © 2020-2023  润新知