00:00
好,那我们当前咱们多对一的这个,呃,映射关系呢,咱们就已经处理完了啊,然后下面呢,咱们把这些不需要用的啊都给它关掉,然后大家注意,下面我们要来实现的是一个一对多的映射关系。那一对多的映射关系,咱们现在有这个关系吗?有啊,你多对一,反过来不就是一对多吗?员工对部门是多对一,那部门对员工就是一对多,一个部门中对应了多个员工信息,那如果咱们一个部门只对应一个员工,大家都知道该怎么去配置,因为咱们说的对一对应的是一个对象类型的属性,而我现在一个部门里面有多个员工,那大家说这个时候怎么设置呀?那一个员工对应的不就是一个员工对象吗?那咱们现在有多个员工怎么写看好了啊,在这儿private一个list集合,然后里面泛型是EP,哎,一定要看好,然后这个呢,大家就记着一个规律就行啊,就是在我们当前咱们的表关系映射到我们的实体类中的时候,我们的实体类该如何来处理它所对应的表的关系呢?对一对应对象,对多对应集合就可以啊,然后下面咱们再来设置它所这个对应的get跟set方法啊,然后下咱们把这个to string方法呢,咱们也给它重新生成一下啊好,然后to string OK啊,这构造器大家不用管啊,你构造器里面你这个你想加一个构造器,想把这个全参构造,然后加上咱们的这个属性,这个成员变量的话也可以知道吧,行啊好,下面呢,咱们来看那一对多的映射关系,咱们在这该如何来处理呢?那首先呀,然后比如说咱们先说需求,我当。
01:40
钱的需求就是我要查询部门信息,并且把当前部门中所有的员工给查出来。这个大家能听懂吧,好,那所以咱们就直接在咱们的部门的map里面来写这个方法呗,大家看好怎么写啊,返回值dept,然后咱们叫做get de PT and emp,大家看好我的方法的起名啊,然后这个是咱们在这个是多对一是emp和de pd,这是一对多是de pd and e,然后y de pdd OK,好,然后这里面咱们是不是需要来写的是一个部门的IDDEPTID。
02:19
然后加上一个A。好,然后我们在这需要来写个注释,这是干嘛的,大家看好,要来查询咱们所查询咱们的部门,然后以及部门中的员工信息,OK啊,好,把它复制放在咱们当前的映射文件中,大家说这东西你怎么想啊,大家知道咱们查询出就是我们现在呢,咱们要想获取部门以及部门中的员工,那我们是不是要进行两表连查,我们现在要来处理的是一对多的映射关系,那咱们该怎么来进行处理呢?两种方式要比多对一呢,要少一种,多对一里面有一种及联的方式,一对多里面就没有,所以说一对多里面呢,咱们需要用到一个collection标签,这是一种,还有一个是分布查询,这两种啊好,那我们可以在哪呢?咱们可以在这个地方给大家写一下,然后咱们处理来处一对多的应。
03:23
不设关系,两种方式,第一种col connection,然后第二种,什么叫分布查询,叫做分布查询,OK啊,那我们先来看咱们的第一种啊,然后咱们如果说在这咱们直接用connection的话,大家注意,那我们是需要一次性将我们通过一个circle,然后把咱们当前的部门给查出来,也要把部门中的员工也给查出来的。然后这个时候咱们先说circle口语句怎么写呢?大家想一下,嗯,这个SQ语句怎么写,要通过一个circle口,既把咱们的部门信息查出来,也把部门中的员工查出来,对吧,怎么写?
04:06
那不还是两表连长吗?以谁为主表啊,以咱们的部门表为主表,那所以说你用左外链接部门放左边,你用右外,右外链接咱们的部门放右边对不对,Dot tab肯定不行了呀,对不对,为什么?因为我们现在大家想想咱们跟咱们之前多对一一样吧,你查询出来的这些字段能对应一个集合吗?对应不了吧,所以说result type肯定不行,咱们得用result map,然后result map里面咱们怎么写呢?大家看好,先把circle写出来啊,呃,很简单,你可以直接去找到咱们的这个circle口语句啊,大家可以直接去找到这个CIRCLE2表连查的这个circle,然后把左外链接换成右外链接,把条件换成部门的条件就行,当然了,这个大家最好是自己写一下,这不就一个circle嘛,对不对,它能有多难呀,是不是来select,然后先from t下划线,比如说咱们也是用走来连接,叫做left join,对吧?然后T_emp然后二来写关联条件T_dept,然后点DEPTD等于T_ep.dep didd,然后再加上条件,怎么写T_de PT de。
05:25
pt.DEPTD等于一就完事了啊好,下面我们在这来一个F9直行,大家看。大家看一下啊,特别是在一对多的关系中呢,我们最终所看到的效果就是一个部门对应了多个员工信息,那我们现在是要干什么的?大家想一下,我们是不是应该是把部门的这些字段放在部门所对应的属性中,而把咱们当前所对应的员工的这些信息先放在员工对象中,再放在我们所设置的那个集合属性里面,是不是就可以了呀?
06:03
大家想想是不是这样的一个过程啊?对吧,所以说咱们把这个SQL语句复制过来,然后放在我们当前的映射文件里面。来。好,然后咱们把它给换一个行啊,然后换行left join on对吧,然后well,在后边来加上一个条件,井号大括号DEPT,好,那这个时候咱们该如何处理来,首先设置一个result map,这叫什么?叫DEP t and EP result map,咱们要来处理的类型,那这就不用说了,肯定是部门类型嘛,因为你部门类型里面是不是有一个集合类型的属性啊,处理不了嘛,对不对?好,再往下来设置咱们的主键的映射关系,Column叫depd_ID然后对应的属性叫DEP did,然后再往下result column是de PT下划线内,然后property,是de p t内。OK,设置完之后还有一个呢,啊,就是我们的EPS在这呢啊,有个EPS,这是一个类色的集合。
07:10
那这东西怎么做?看好connection。Collection啊,来,在我们的这个映射文件中跟大家写一下咱们常用的标签,在这又多了一个叫什么叫collection干啥的处理一对多的映射。关系说白了啊,处理谁的处理集合类型的属性,你看看它叫啥,它不就是叫connection connection是啥?咱们Java里面集合的跟接口是不是就叫呢?所以说它是专门来处理咱们集合类型的属性的,所以不管你是一对多还是多对多都可以通过它来处理,知道吧,好,那下面呢,我们再接着往下看,咱们在这要处理的属性叫EPS,然后下面咱们需要怎么去写呢?我们之前在association中,咱们用的是不是一个Java type对不对?但是大家注意,在这咱们就不能再使用Java了,为什么?
08:10
大家说你都用莱标签了?咱们就从咱们的代码层面来分析啊,你都用connection标签了,那我们当前所处理的属性,那不就是一个集合类型的属性吗?对不对?那关键是我们现在咱们不需要知道这个集合到底是什么集合,List还是set,我们最主要的是要知道你的集合里面存的是什么类型,然后我们才可以将咱们查询出来的什么员工信息的这些字段去对应我们集合里面所存储的类型中的属性,所以说在这咱们不能去写谁呀,Java type,因为你用connection,那就是来处理一个集合类型的属性的,我们要用的是什么什么type,叫of type干啥的来设置我们当前集合中的类型,大家要注意啊,叫做of of type,然后里面写谁EP,那集合里面存储的数据类型,那不就是EP吗?员工信息吗?对不对?OK,设置完之后后边就一样了,ID设置字段跟属性的映射关系,看好啊,字段EP_ID然后属性写的是谁的,属性写的是我们当前集合中所。
09:23
存储的类型中的属性ED,好,再往下,然后是result啊,Re sumt,然后在这是EP name,它对应的属性叫EP name,复制复制这是年龄,然后这是性别,金ER,然后age age,然后gender,金nder,完事啊,大家注意,这就是我们当前咱们的一个一对多的处理方式啊,用collection标签跟咱们的association标签非常像,只不过就是里面有个属性不一样,什么属性?啊,就是这个of type association用的是Java type来设置这个属性的类型,而of type表示的是集合中的类型,大家要注意啊,好,咱们把它复制过来,把它给放到这儿,然后设置完之后咱们就可以来进行测试了呀,对不对,然后咱们来在这里面,然后复制一下啊,然后我们现在要来测这个叫什么,这个叫做get dept EP。
10:27
对吧,然后by DEP TD。然后呢,咱们现在需要获取的这个map对象也不一样啊,应该是get map是dept map.class OK,然后再来调用其中的方法,哪个方法第一个方法啊,在这来写个一,然后获得一个第1PT对象,然后咱们直接把它给输出,大家来看啊。好,现在咱们来一个执行。把这个部门信息咱们给他输出。好,大家看一下,你看这是部门对吧,然后ID是1DEPD name是A,然后他所对应的员工一共有几个,两个,一个是张三,然后一个是赵六,大家看一下是张三和赵六吧。
11:13
对不对,大家看好,这个时候咱们就可以来获取到了啊好,这是咱们的一对多的映射关系,大家注意咱们用的标签是谁啊,叫做connection标签,然后这里面咱们唯一一个区别就是我们在这的这个of type属性,这是干什么的?大家注意,它是用来设置咱们的集合类型的属性中,然后存储的数据的类型。一定要看好啊,来设置集合类型的属性中,然后咱们存储的数据的类型,好,这是咱们的一对多通过connection,然后来处理的一对多的映射。也是很难啊,这也是一个模板啊,然后呢,大家注意,以后你只要处理这个集合类型的属性就用connection就行,知道吧,哎,行啊。
我来说两句