00:00
好,那我们刚才呢,咱们是通过result map呢来处理的字段名跟属性名不一致的情况,好然后下面呢,那我们来处理一下这个多对一的映射关系啊,多对一的映射关系呢,大家注意,就是这个东西为什么咱们要处理啊,首先呢,这个表关系咱们是学过四种,是一对一,多对一,一对多,还有多对多,咱们在这主要说多对一和一对多啊,因为一对一和这个多对多的处理方式是一样的啊好,然后那我们现在咱们先思考一个问题啊,就是说我们的表和表之间有关系,那大家说它所映射的实体类之间是不是也要有关系啊。比如说我们现在咱们在表里面,你可以通过一个字段来表示当前这个员工所对应的部门的ID,那我们在它所对应的实体类中,我们是不是也要来设置一个属性来表示这个员工所对应的部门的信息,对吧?那这个时候咱们应该怎么来设置呢?大家注意,你只要把这个表和咱们的实体类之间的关系给弄明白就行啊。
01:04
这个表啊,对应的是咱们的实体类字段,对应的是咱们当前的属性,然后呢,我们当前咱们的表里面的一条数据对应的是咱们的一个实体类对象,那我们现在咱们的员工对部门是多对一,那也就是说一个员工对应的是一条部门信息,也就是说对应的是我们当前的一个部门,是一条部门数据,也就是说这张三呢,它对应的应该是咱们的DEP did为一的这个部门信息,对吧?那一个部门信息对应的是不是应该是一个部门对象啊,那所以说咱们现在如何在实体类里面来设置这个实体类和实体类之间的关系呢?非常简单,因为员工对部门啊,它是多对一的关系,所以说一个员工对应的应该是一个部门对象,那反过来说,一个部门中有多个员工信息,那这个时候一个部门里面咱们怎么设置员工,大家注意是一个员工的集合,所以说这就是一个规律,你要记好以后。
02:04
第一对应的就是一个对象,对多对应的就是一个集合就可以啊,那下面咱们先来处理多对一,咱们在员工表员工的实体类里面来设置一个部门dept类型的一个属性,然后这个表示的就是咱们当前员工所对应的部门,OK吧,好,那我们要来设置它的get跟set方法。好,然后再把我们当前咱们的托斯string方法,然后来重写一下,OK,好这就可以了啊,然后呢,我们把这个写完之后,大家来想啊,那我们现在咱们是要干什么的,我现在呢,我要查询员工信息,还要把员工所对应的部门信息呢,咱们也把它给查出来,用一个员工的实体类来表示当前员工的信息和员工所对应的部门,然后部门这个属性呢,咱们已经设置过了,那关键是大家想想我们怎么去查呀。
03:00
我们现在咱们通过一个circle口,是不是既要把员工查出来,还要把部门给查出来,那当然呢,这就涉及到了多表连查了,然后呢,咱们的多表连查,咱们一会呢再回顾,那我们先来说一下,大家想想这个东西好查不好查,好查你两表连查之后,咱们通过一个搜狗就可以把员工信息也查出来,把咱们当前的部门信息也给查出来,这个简单,但是关键是咱们查询出来的部门信息,量表连查之后,我们查询出来的应该是这个员工以及员工的信息,以及员工所对应的部门的信息,也就是DEP did和depd内,然后这两个属性,我们现在需要让他干什么,大家想想,那我们表和实体类之间是有映射关系的,我们的员工的信息可以跟员工的这些属性来进行映射,但是我们当前咱们的部门大家想想,你这个属性能跟咱们部门的信息进行映射吗?不能吧。因为我们现在如果要说映射关系的话,你是不是要把咱们查询出来的DEPTD和de pd内跟咱们的这个实体类类型的属性映射对不对。
04:07
大家想想这样行吗?不行,我们应该是拿着谁跟谁映射的,是拿着DE1P tad跟它里面的DE1P tad属性映射,而DE1P ta内是要拿着它跟咱们这里面的de PT内幕属性映射,所以说大家一定要看好,如果我们现在直接把它查出来,然后把咱们的结果类型呢,设置为emp的话,那我们当前的这个属性大家注意它是映射不上的,OK吧,好,那我们通过代码呢,咱们来看一下啊好,我们在这咱们这样去写,然后E返回值还是emp啊,然后叫做get EP and depd。来获取员工,然后和部门的信息,然后通过谁来获取EPID来获取,这个大家注意啊,好,这样呢,咱们也是传输过来一个EPID,然后把它这个注解啊给它写上,然后epd OK,然后这是干啥的杠星星回车,然后来获取员工及来获取咱们的员工,然后以及所对应的部门信息。
05:14
OK,咱们把它复制来,放到我们当前的映射文件中,咱们就把它放到最后啊,来放到这儿。好,然后这个标签应该是一个查询,然后下面我们是不是就需要干嘛了,通过一个搜口语句,把员工也查出来,把部门也查出来,然后再设置它的映射关系,对吧,那这个时候咱们就要用到两表连查,那这个时候re多的tab肯定是不行的啊,或者说咱们可以先试一下,你就在这写成是EP,然后咱们的S口语句。怎么写?大家想想,两表连查,两表联查,查询出来的结果呀,一共有七种,不知道大家还记不记得啊?一共有七种,而我们当前咱们用的最多的啊,来我把这七种给大家画一下啊,比如说我们当前咱们的这是A表,然后呢,这是B表。
06:07
好,然后我们当前查询出来的结果为什么是七种呢?看好了啊,首先这一部分。这一部分啊叫做A交B,然后这一部分叫A,这一部分叫B,然后这一部分啊,就这一部分。啊,然后叫做A减去A交B,这一部分叫做B减去A交B,这就已经是五种了,还有A并B第六种,还有第七种啊,叫做A并B减去A交B,也就是这一疙瘩,然后和这一疙瘩,然后呢,每一种啊,咱们每次咱们每获取一个结果,它对应的S口尾句都不一样,在这我就不多说了啊然后大家要注意,我们现在用的比较多的啊,就是A交B,就是这一部分,还有谁呢?AB。比如说咱们把A表作为员工表,把B表作为部门表,然后这个大家看这个A表示的是啥,A表示的就是我要获取所有的员工信息,我不管你当前的员工有没有部门,我都要把它查出来,然后B这张表啊,然后B这个结果是什么意思,我要查询出来所有的部门以及他所对应的员工,我不管这个部门有没有员工。
07:19
好,然后咱们这两个结果你怎么查呢?非常简单,左外链接和右外链接,如果你要查A的话,那我们用左外链接,A要放左边,如果你要查,如果说咱们要用右外链接的话,那你要查A,那你就要把A给放右边。这个大家应该都学过吧,好,然后所以说呢,我们现在要干什么,我们现在要来查询的是我们的某一个员工和我们当前这个员工所对应的部门,那首先你要知道这个员工他是有可能没有部门的,因为我们现在主要查的就是员工信息。所以说你要知道我们重点查的是什么是员工,那所以咱们管不管他有没有部门啊,没有,所以说我们应该是在我们当前咱们的A的范围之内,然后去查询某一个员工信息的,所以说在这大家就需要干什么,用左外链接或右外链接,左外链接A放左边,右外链接A放右边就可以啊,比如说你选一种就行,比如说咱们用左外链接怎么写select的星,然后from t_EB。
08:24
这是咱们的员工表,然后left left join t_dept,好,OK,然后再往下,咱们需要通过按关键字来设置它们两个的关联条件是T_ep.de PT_ID等于T_de pt.de PT_ID。好,这个大家要看好啊,然后咱们可以把这个SQL语句复制过来,放在我们当前的circleq样里面,你执行一下。然后我们一个F9,大家看查询出来了吧,然后但是咱们还有一个条件,咱们查询的是某一个员工,以及员工所对应的部门,所以后边咱们还需要再写个T_emp.emp_ad,然后等于一,比如说就等于一啊好,我们现在咱们来一个F9执行,大家看数据就查出来了,那我们现在要的是谁?要的是我们的员工的所有信息和部门的所有信息,对吧?然后这里面有一个重复的de PT_ID你处理也行,你不处理也行,如果咱们要想处理一下的话,T_emp点行,还有T_de PT。
09:40
点星就可以啊好,然后再往下,后边咱们把这个条件给它加上well t_emp然后点EP_ID等于井号大括号EPID。好,这个circle语句大家一定要能看懂啊,然后咱们可以在这给它换一个行,把咱们查询出来的字段啊放一行,然后呢,从哪一张表里面left join,还有咱们的这个对吧,都给它换个行啊好OK,那我们现在呢,咱们的circle语句写完了,那大家说这个时候它能对应的上吗?它对应不上啊,你想想我们查出来的是谁,是de PT_ID和de pd下划线内,那咱们说了,他要想去映射的话,它应该映射的是DEPTD属性和depd name属性,而我们当前让他映射的直接就是咱们的EP这一个类型,那所以说大家想想你的一第1PT这里面,就我们查询出来的字段里面有没有能跟这个有没有能跟这个实体类类型的属性对应的,有没有啊,没有啊,因为咱们说过,要想跟属性映射字段名跟属性名得保持一致。
10:50
对吧,咱们就说,咱们就不说名字一致不一致,你说它的类型能匹配的上吗?这是一个de PT类型,而我们当前查询出来的de pd_ID这是in泰类型,这是什么类型,这是字符串类型,能跟它对应吗?对应不了啊,所以说大家一定要看,你看我们在这来测试一下,大家看好复制。
11:13
好,然后我们在这是get EP and de PT,然后by e pd,然后我们要调用的方法啊,也是and dept by e pd,好,写完之后,我们现在咱们来一个执行,大家看你在这你能查出来的啊,只有谁,只有我们当前咱们的这个什么呀,员工信息这两个匹配不上,那是因为我们没有用map,而且我在我的核心配置文件中啊,我是不是把咱们的这个全局配置啊,是不是给它注释掉了,来咱们现在把再来执行一次,大家看啊,然后呢,E PI name age,还有金的这些属于员工信息的都能匹配的上,但是部门信息匹配不上,为什么?你要知道你查询出来的,然后这些能匹配上,那是因为咱们的字段名跟属性名一致,它匹配不上,那是因为你当前的这个第1PT是什么类型,是第1PT实体类类型。
12:13
而我们查询出来的字段是第1PD_ID和第1PD下划线内幕,我们要做的是什么大家应该都知道,我要做的是拿着我第1PT里面的这些属性啊,这些字段跟我第1PT中的属性进行映射,而不是要跟它进行映射的,知道吧,哎,行啊,好,那这个问题我们现在就要来解决一下,对吧?怎么来解决呢?三种方式啊,三种方式,第一种方式集联的方式,第二种方式association,用咱们的result map里面的一个标签,然后第三种方式的话,然后咱们需要用的是一个分布查询,当然这三种都要用association标签,用到map,知道吧,都要用到这个result map自定义映射,因为咱们通过默认的映射关系,它一定是映射不上的,不管是从名字来说,还是从咱们的类型来说,它都是匹配不上的啊。
13:06
好,这个大家注意那行,那下面呢,那咱们就把这三种方式呢,给大家来讲一下啊。
我来说两句