00:00
好,那我们现在呢,咱们是通过association来处理了多对一的一个映射,那下面呢,咱们的多对一呢,咱们还有第三种方式,大家看啊,叫做分布查询。什么叫做分步查询呢?不是这个步啊,大家注意是一步、两步、三步的步,叫做分步查询,也就是分步骤来查询,一步一步的来查,因为我们现在咱们要来实现的是多表连查,那所以说大家想想,咱们能不能把它给分开,我一步一步的去查询,因为我现在要查的是员工信息,以及员工所对应的部门信息,那我能不能先把咱们的员工也查出来呀?然后查出来员工之后,咱们再把员工所对应的部门的ID作为条件在部门表里面来查询,那咱们是不是就能够查询出来它所对应的部门了?这个大家能听懂吗?然后这叫做分布查询啊,也就是说我们现在咱们在多表连查的环境中,我们可以通过多个搜口语句,一步一步把咱们所需要的数据查询出来,这样的啊,好,然后分布查询也可以处理多对一的关系,也可以来处理一对多的关系,那咱们先来处理咱们这个先使用这个分布查询来处理一下多对一,然后这个东西咱们应该怎么去做,特别是在分布查询里面,大家注意这东西以后用的还是挺多的啊,然后大家一定要想清楚,你当前你的这个查询呢,它应该分几步,每一步应该是什么。
01:31
这个大家一定要想明白。知道吧,比如说我现在要查的是员工以及员工所对应的部门,那我第一步就得先查员工,查完员工知道查,查完员工之后我就知道了员工所对应的部门ID,那我再把部门ID作为条件去部门表里面查询部门信息。查询出来的结果,再赋值给我们emp里面的de PT对象,这不就完事了吗?大家说是不是对吧?所以说啊,来,咱们在这再写一个方法,然后这个方法呢,我直接复制一下啊,然后呢,我们怎么写,叫做get e and dept叫做by step s step叫做by step,看好啊,什么意思?
02:17
然后叫做分,通过分步查询来获取咱们的员工和部门信息,这是咱们的第几步呢?这叫第一步,大家看好啊,叫get的EP,然后and de PT,然后by step one,这是咱们的第一步,然后呢,我们现在大家看一个啊,选章注释是这是咱们的分部啊,这是咱们来查询员工和员工以及所对应的部门信息啊,是通过什么?通过分部查询,通过分部查询来查询员工以及所对应的部门信息的第一步,第一步。OK啊,这个大家注意,然后下面咱们在这来一个复制,然后呢把它给放到咱们的映射文件中,咱们再往下写啊,大家看好,然后呢,这个搜口尾句大家注意,非常的简单,为什么?因为现在分部查询你还需要用两表连查,多表连查吗?不需要啊,我们现在咱们只需要把谁查出来,把员工查出来就行,知道吧,然后在这这个ID放进来,然后呢,这个是result map,大家注意用的还是result map,你就不要再想着用result type了,因为里面有个属性,你我们用result map就是来处理那个de pd属性的,知道吧,所以说result type肯定是不行的啊好,Select的星from t_MP然后well emp_ID等于井号大括号EPIIDOK啊,然后呢,我们把这个map呢,咱们给它写一下啊,我直接复制一下就行,因为这里面的东西啊。
03:55
对吧,很像啊,然后他用到的还是那个标签,呃,Association标签,大家注意用到的还是这个标签,只不过就是我们当前咱们这个标签里面啊,属性它用的不太一样了,然后这个property仍然是设置我们当前要处理的属性的,但是这个属性现在咱们是通过这个circle查出来的吗?不是啊,大家注意这个咱们叫EP and de pd,然后by step step map啊,然后咱们把它给拿过来啊,不要嫌它长啊,你长对吧?长还不好吗?长咱们可以从这里面是不是可以看出来它到底是,嗯,它到底是什么意思,对吧?到底我们是在哪来哪一个功能中来使用的map啊。
04:43
好,然后下面呢,那我们再来看这个association,大家说我们现在是要干啥呀?我们现在咱们是不是需要把这个属性啊给他查出来,然后怎么来查呢?我们原来咱们通过两表连查,我们是通过我们当前这一个circle口查询出来的字段,然后跟第1PT来进行对应,当然跟它对应不了,咱们需要跟1PD中的属性进行对应,而我们现在的分布查询,我们当前的这个属性从哪来的?是从你的分布查询的第二步,也就是通过我们的另外一个SQ卷而来的,所以说这里面需要用到的属性啊,叫select,这是第一个,然后第二个叫什么叫color啊,一共是这两个啊,这两个分别是什么意思呢?咱们一会再给大家解释,那首先既然咱们说了需要两个circle口来查,那我们就再把咱们的另外一个circle口也写出来呗。
05:38
再创建一个map接口叫dept,记好啊,不要把它给写到同一个里面,那从代码角度来说,你写到一个里面行不行,也就是说我把我当前我的分布查询的第二步也写到这个映射文件中行不行,那绝对没毛病啊。是不是呀?没没有任何问题啊,但是我建议大家不要写到同一个里面,为什么不要写到一个里面呢?因为我们当前咱们的一个表对应一个实体类,对应一个map接口,对应一个映射文件,所以这个映射文件它是用来查哪个表的,对吧,它对应的就是一张表,那所以说你现在你写的S去查哪一张表,你就写在相对应的映射文件中就行,知道吧,好。
06:23
OK,接口选完之后,然后下面咱们再来创建它所对应的映射文件来。好,叫de PT map,然后这呢,要跟咱们的接口的全类名保持一致,map.dept map OK,大家看好,我在这来写这样的一个方法啊,咱们的第二步大家说是干嘛的?啊,这是咱们的分布查询的第二步,你要查一个,你要查的是什么。大家想想,你第一步要查员工,第二步是不是要把员工所对应的部门查出来呀,所以说这个方法是不是应该你查询出来的结果,它就是为我们当前的第1PT这个属性来进行赋值的,大家说对不对,对吧,所以说我们当前咱们的这个搜口语句,你的这个方法查询出来的结果。
07:09
他一定得跟我们当前要处理的这个属性的类型是一样的呀,你这个类型,这个属性的类型是第一批D,那你放心。你的这个方法的这个返回值类型,它一定也是dept,为什么?因为你当前的这个属性,它的值从哪来?就是通过我们当前咱们的这一步S口语句而来的,知道不?哎,这个大家要注意啊,所以说这里面写什么叫做dept,然后叫做get EP and dept by step two tw two,大家注意啊,然后这是什么功能,看好杠星星回车来。咱们在这儿给他复制一下,这是咱们通过分部查询,然后来查询谁查询员工以及所对应的部门信息的第几步,然后第二步啊,好,那大家说他有没有参数呀,有没有参数,有参数吧,肯定得有参数呀,对吧,什么参数,你现在要查询的是员工所对应的部门啊,对不对,那所以咱们通过第一步我是不是可以查询出来这个员工所对应的部门的ID,那我在这查部门的时候,咱们不就是员工的部门,员工所对应的部门ID是谁,咱们在这要写的是不是就是谁。
08:26
对吧,所以说这里面写的是啥inte类型的de pd。大家想想是不是对吧,加上一个eight per叫DEP完事啊好,这是我们当前咱们的这个方法。一定要想明白啊,一定要想明白分两步,哪两步以后,我们很有可能你当前你要多表连查,三张表,四张表连查的时候,五张表连查的时候,咱们用的也是分步查询,这个时候你就一定要想好,你当前要分几步来查,每一步是什么,大家一定要想明白啊,好,就像是我们现在你第一步要查员工,第二步要查员工所对应的部门,你怎么把这个部门查出来,员工对应的部门ID是几,那咱们在这查询的是不是应该就是哪一个部门信息,所以说咱们要以部门ID作为条件去查。
09:18
好,再来找到咱们的映射文件,然后呢,把circle口语序来写一下,ID要跟方法名一致,然后result type,大家说这东西还需要用result map吗?不需要吧,你看你的de pd里面都是啥啊,De pd pd name,你这东西是不是跟字段名是不是跟字段名,字段名跟属性名是不是一样的呀?那不一样,咱们在核心配置文件中,咱们设置的不是不有这个下划线映射为驼峰吗?对不对啊,有同学这能一块用吗?可以一块用,知道吧,没问题啊,好,然后所以说咱们在这是不需要来使用谁的result map的,咱们直接来使用without type就行啊,写谁de pd就可以啊,然后下面select星,然后from t_de PT,然后while de PT_ID等于井号大括号de pdd就完事了。
10:14
好,这个大家看好啊,那行,那我们现在咱们的两个S口语卷已经写完了,那写完之后我们现在是不是要把它给关联起来,怎么关联起来呢?大家想一下,我们当前的这个属性的值从哪来,是不是要通过我们当前的这个方法查询出来,再给当前的这个属性赋值,所以说我们的select里面,然后来写的就是我们当前下一步的这个so,下一步分布查询的。下一步的这个circle口语句的唯一标识,也就是说我们当前咱们的这个值从哪来,是不是要来调用我们当前的这个方法,然后这个方法对应的是不是我们的这个SQ语句,对吧?然后那我们当前咱们的这个第1PT属性的值呀,它就是从这个SQ去查询而来的,那所以我们现在呢,咱们这里面写的是啥?写的是分布查询的circle的唯一标识,也就是说我现在我要去定位到我们当前的这个circle口,然后把这个circleq查询出来的结果,然后赋值给咱们当前的这个属性。
11:19
那大家说你怎么想啊?大家想想这东西怎么写啊?什么叫做so的唯一标识?咱们在第一天讲这个myab的时候,对吧?入门案例里面咱们就讲过什么叫唯一标识,Name space.circle的ID就是唯一标识。忘了的话,大家再回去看看好,然后呢,所以说其实也就是咱们当前的map接口的权利名,点什么方法名,所以说啊,点击右键,然后直接copy来复制它的引用,然后获取到的就是咱们的什么类名加上方法名。能看懂吧。com.ADD硅谷点买点map.de PT map get EP and dept by step two。
12:07
OK吧?好,再往下,那color是用来干嘛的,那大家有没有发现我们在执行这个circle的时候啊,它怎么地,它是不是有条件呢,对不对,那我们当前咱们的这个条件,大家说这个方法是你自己在调吗?不是吧,是我们当前咱们的买be体在实现这个功能的时候,当我们需要去查询这个属性的时候,然后是不是它会去自动来调用我们当前的这个方法,把这个方法查询出来的结果,然后赋值给这个属性,大家说是不是?对吧?好,然后呢,所以大家想想,那你说我们的这个条件从哪来,那不就应该是我们执行完第一个circle口之后,由第一个circle口传输到我们的下一个circle里面的嘛,对不对?所以说column写的是啥?写的是条件来作为下一步的circle的条件的字段,我们在这儿根据谁查的dept查的,所以说column里面写什么depd_ID把咱们当前所查询出来的某一个字段来作为下一个SQL语句的查询条件。
13:15
能看懂吧。这个大家一定要注意啊,你要知道这个方法不是咱们自己调的,这是我们当前分步查询,先执行这个circle口,再执行这个circle,那所以它的条件从哪来,从第一个circle查,从第一个circle查询出来的结果里面而来。所以说column来设置一个分布查询的circle的条件,把咱们当前查询出来的某个字段作为下一个分布查询的circle的条件,OK吧,嗯,行好,下面呢,咱们就。开始吧,来测试一下,大家看啊来咱们还是把这个东西呢,然后来复制一下,然后在这呢,咱们叫做BY,什么叫by step step step,然后这个地方呢,咱们要调用的方法是map点,叫做get。
14:05
EP and dept by step one,然后把E给写进去,然后获得一个E对象,So,然后E就可以啊,下面大家看好啊。好,咱们在这来执行的之后,大家会发现咱们当前咱们你看输出的circleq一共几个,两个先来执行的是查询员工信息,然后再来执行的是查询当前,根据当前员工所对应的部门ID,然后去查询当前部门信息,大家看查出来了没有,查出来了你看啊,我在这来写个二啊,来写个二,然后我们在这再来一个执行,大家看。也是没有任何问题的啊,然后这个时候咱们就可以把咱们的第二个员工以及他所对应的部门查出来,OK吧,行,这是咱们的分部查询,大家注意这也是一个模板,这东西你说它难吧。对吧,它其实它也没有那么复杂,它的可变性没有,基本上没有什么可变性,对吧,然后你该怎么去写就怎么去写,这里面的标签,咱们要用到的标签它都是固定的,知道吧,你说它简单吧,它写起来比较麻烦,咱们最起码还要写多个S口语句,那咱们现在就查两张表,就俩SQL语句,以后如果说咱们要五表连查,那你可能要分布分的就多了,对不对,所以说这个东西大家看好啊,然后呢,它不算是很难,因为这里面的标签都是固定的,如果你以后你再需要来实现一个多对一的分布查询,那这个时候大家需要去改的啊。
15:39
对吧?Association标签里面属性名你要改,然后咱们下一个搜口语句的唯一标识要改,然后咱们要查询的字段要改,但是这些标签需要标签和属性需要去改吗?不需要啊,这个大家注意好。咱们在这呢,给大家来写一下这个属性的作用,Proper干啥的,一样的啊,这是我们当前要处理的什么设置需要处理映射关系的属性的属性名知道吧,然后再往下,这里面有个select select的,大家说这是用来干嘛的,用来设置啊,然后咱们的下一步对吧,咱们分步查询的circle的唯一标识。
16:24
设置分布查询的circle的唯一标识,这是select啊,其实也就是说你当前的这个属性的值由哪个circle查询而来,知道吧,然后再往下还有一个叫做column,那column这东西又是干什么的?大家注意,它是用来设置咱们的分布查询的circle的条件好,然后这样写,然后将什么将咱们的。查询查询出的某个字段,某个字段,然后来作为分布查询的circle的条件,这个大家看好了啊,然后你一定要想好条件是什么,然后再把我们当前咱们的某一个字段来作为下一个circle语句查询的条件,千万不要写错了,OK吧,好,所以说这个东西大家也就是下去啊,你去自己建个表,然后呢,去测试一下,测试完成之后就可以了。
17:20
啊,然后你把这个东西啊,作为一个模板保存下来,你能记住那更好,记不住的话,大家到时候啊,就把这个模板复制过来,往里面去套数据就行,知道吧,它这东西它没有为什么这个这个大家知道吧,哎,行啊。好,那下面呢,那咱们大家想想,那为什么咱们要用分布查询对吧,你看我在这执行的俩S口语句,那我用一个两表连查,我一个S扣去把所有数据都查出来的不行吗?可以,但是咱们的分布查询呢,它是有自己的优势的,OK吧,下面咱们就把分布查询的优点呢给大家说一下。
我来说两句