互联网轻量级框架SSM-查缺补漏第六天【级联+延迟加载特辑】

  简言:本来这是昨天看的,但是因为想好好写一下【级联】这个东西,所以就看完之后今天来整理一下。

级联

  1. 什么是级联

  级联是一个数据库实体的概念。比如教师就需要存在学生与之对应,这样就有教师学生表,一个教师可能有多个学生,这就是一对多的级联;除此之外还有一对一的级联,比如身份证和公民是一对一的关系;再例如用户与角色的关系,一个用户有多个角色,一个角色也可能有多个用户,这就是多对多的级联。(在MyBatis中多对多的级联可以用两个一对多的级联进行代替)

  级联不是必须的,级联的好处是获取关联数据十分便捷,但是级联过多会增加系统的复杂度,同时降低系统的性能,此增彼减,所以当级联的成绩超过3层时,就不要考虑使用级联了,因为这样会造成对个对象的关联,导致系统的耦合、复杂和难以维护。在现实的使用过程中,要根据实际情况判断是否需要使用级联。

  2. MyBatis中的级联

   MyBatis的级联分三种:

鉴别器(discriminator):它是一个根据某些条件决定采用具体哪类级联的方案(说白了就是根据给出的条件去判断采用哪种级联,有点JavaSE中Switch的感觉,而且鉴别器也可以不去采用级联,而是直接映射关系,下面会有介绍)

一对一(association):比如学生证和学生就是一种一对一的级联

一对多(collection):比如老师和学生就是一种一对多的级联

  3. 级联的配置与使用

  一对一的级联:

  拿身份证和公民的关系举例:先建两个POJO文件。假设要得到公民信息。

/* 公民类 */ public class person { private int id; private String name; private IDCard idCard; /* getters and setters */ } /* 身份证类 */ public class IDCard { private long id; private String name; private String addr; /* getters and setters */ }

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpjwyz.html