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.使用内联映射,利用多表连接查询

 

猜你喜欢

转载自www.cnblogs.com/djma/p/12916043.html