00:00
好,那我们刚才呢,咱们已经讲了咱们的多对一处理的两种方式了,来咱们在这给它加上一个注释,这是我们处理多对一映射关系的方式二,对吧,然后是通过咱们的association来处理的啊像当然呢,其实咱们的第三种方式其实也是association,然后只不过就是呢,咱们的association,咱们在这儿呢,跟我们的第二种方式唯一的区别就是我们的第二种方式是通过咱们的一条搜口语句,就可以把所有的数据查出来,然后再来设置我们当前的映射,对吧,然后但是咱们的第三种方式的话,大家注意,它叫做分布查询。叫做分布查询。那什么叫分布查询呢?顾名思义,我们现在咱们需要通过分布,然后将我们所需要的数据给查询出来,那怎么来进行分布呢?大家想我们现在要来处理的是多对一吧,对不对?那也就是说我们要通过查询多张表,是不是才能把我们所需要的数据查出来,那我们能不能通过多个SQL据一步一步的来实现呢?比如说我们现在要来查询的是员工,那我们可不可以先查员工,把员工查出来了,那咱们是不是就知道了员工所对应的部门ID,那我们现在咱们部门ID知道了,我再通过我的部门ID去查询咱们的部门信息,那我是不是就可以把我所需要的数据都查出来,对不对?那到时候我们是不是通过这两个circle对吧?通过第一个circle来获取员工信息,通过第二个circle把我们所查询到的部门信息复制给咱们的de PT属性是不是就完?
01:46
事了呀,对不对,所以说大家注意,咱们的第三种方式啊,叫做什么叫做分步查询,哎,叫做分步查询,好,那我们的分布查询呢,是我们以后用的比较多的一种处理多对一,以及咱们的一对多的这种方式,所以说呢,大家一定要好好看啊,首先呢,那我们在使用分布查询之前,大家一定要知道你要干什么,第二个问题,你要知道我通过分部怎么来实现,实现我当前这个统一的功能,比如说我们当前多对一要查询员工以及员工的部门,所以说咱们可以先查员工,再查询出来员工所对应的部门信息。
02:31
对不对,所以说大家来看啊,首先呢,咱们在map接口中来创建一个方法。杠星星回车,咱们是通过分部查询,然后来查询谁呢?咱们的员工,以及员工所对应的部门,然后咱们还是查询一个,然后呢,我现在我叫做get EP and de PT by step。
03:00
能看懂吧,叫做获取员工和部门通过什么,通过分布查询来获取啊,行来大家看,那我在这儿我写一个叫做by step one吧,因为我们现在这个是我们当前咱们的分部查询的第一步,我需要先将我们的员工信息给查出来啊好,然后大家注意,这是我们的分部查询,然后第一步,第一步干什么?然后查询咱们的员工信息,来查询员工信息,那所以说大家想想我现在这个方法所对应的SQL语句,我们还需不需要用两表连查了,不需要,我们只需要把员工信息给查出来就可以啊好,我们是不需要用两表连查把所有信息都查出来的,要不然他还怎么分布呢,你一步就给他查出来的,那哪还有第一步和第二步呢,对不对?所以说在这是in tIgEr类型的eid,然后我们来设置it para命名参数,然后叫做E。
04:00
就可以了啊,行,复制找到我们当前咱们的映射文件,大家注意咱们的映射文件中可能要写很多的内容啊,所以说大家好好看来,那我们把这个S区呢,咱们给它放到这,然后这个是一个select的标签,ID要跟咱们当前的方法名一致,OK吧,然后在这的话,咱们需要用到的仍然是result map,那我们当前咱们是不是只需要来查询谁呀?T_EP然后well ead等于井号,等于井号大括号ead就行,因为我们现在分步查询,第一步咱们刚才不说了吗?要查询员工信息嘛,咱们的第二步才是来查询部门信息对不对?好,那下面大家来看我现在呢,然后我把咱们的result map给创建出来,然后它的ID咱们叫做EP。来,咱们复制一下啊,叫做EP and DEP,然后by step step by step result map OK。
05:07
好,这个大家注意啊,这个是获取我们的员工以及部门信息,通过什么来获取分部查询来获取OK吧,叫做result map OK,然后我们要来处理的类型,那不用说还是咱们的员工信息,然后其他的东西大家注意,咱们都可以复制啊,都可以复制,然后只不过就是在我们去处理我们当前的de PT属性的时候,我们还要用association,我们要来处理的属性叫做de PT,然后我们现在这个属性的值咱们是怎么得到的,咱们是通过另外一个circleq去查出来的,所以说我们在这要通过select的属性来设置,我们是通过哪个circleq查出来的OK吧,好,然后再往下,我们还需要再来设置一个字段,大家注意它叫什么,它叫做卡。
06:03
好,那这个东西又是干什么的?大家注意,这个东西并不跟我们上面这个一样,咱们上面这个是用来设置属性和字段的映射关系的,而我们这里面的属性确实是要来设置我们要操作的属性,而我们的卡是来设置谁的?大家说我现在是不是要来查询员工啊,我员工查出来我怎么查部门,你是不是要根据员工所对应的什么did去查询部门信息,所以说这个column来设置的是我们分布查询的条件,也就是说我们的第二个S语句你该怎么去查,我们要根据dad,然后去查询部门信息,那所以说卡里面来写的是谁?写的就是我们当前这个员工所对应的did,这个大家注意啊,所以说column写的是谁啊,分布查询的条件。大家注意啊,好来,下面咱们把它复制一下,给它放到这儿。
07:05
然后呢,那我们现在就可以来写咱们的第二个circle了呀,咱们的第二个circle是不是应该是关于部门的,那所以说我们是不是应该写到我们的部门的map里面,对不对?来咱们来找到我们的这个dept map,然后找到我们的dept map点叉ML,来大家看一下,咱们把这个写一下啊,然后这个应该是我们当前咱们分部查询的第二步来。咱们把这个复制,然后找到我们的map接口,大家看好,这个是我们分布查询的第二步,然后第二个步骤,然后干什么,大家看好啊,是通过咱们的dad来查询员工所对应的部门信息。OK吧,那所以它的返回值呢,肯定是个第1PD啊对不对,为啥呢?因为我们现在咱们的分布查询你的第二步的circle。
08:06
查询出来的结果。不是要给咱们的de pd属性赋值吗?那所以说你的de PT是什么类型,那我们当前咱们的这个S口语句,也就是这个方法所对应的类型也一定需要是什么,对不对?好,然后再往下叫做get depd,叫做get EP and DEP,然后by step two,大家注意啊,这是我们来获取员工以及员工所对应的部门通过分部查询的第二步,OK吧,好,括号里面,那大家说我们应该写什么,你是不是得通过did来获取啊,对不对?所以说在这咱们应该传过来的是一个ineg类型的did,然后加上一个a per叫did就可以,然后下面大家来看,咱们来复制,然后呢,放在我们当前咱们的映射文件里面,首先呢,这是一个查询,大家说咱们需不需要用谁呀,Result map呀。
09:08
需不需要,好像需要啊。因为我们的字段名跟属性名不一样,那这样啊,然后咱们因为咱们的字段名不是叫第1PD下划线内幕吗?我们的属性名咱们是叫第一批D大写的这个这个驼峰这个内部对不对?所以说呢,在这大家看好,我把咱们的这个全局配置给它去掉啊,把注释给它去掉,所以说那我们现在咱们来查询咱们的部门信息的时候,那我是不是就不需要再设置result map了,咱们只需要来设置咱们的result type就行,OK吧,因为咱们设置的有全局配置,可以自动将下划线映射为驼峰。能听懂吧,好啊,行,那在这咱们来写一个de pd,然后叫select的星from t_de PT,然后设置条件while dad等于井号大括号dad就可以啊,这个大家注意,这个就是我们当前咱们的一个查询分布查询的功能,你首先你一定要想明白,我们当前分部查询之后,这两个circleq去分别是什么,你得先查员工,员工查出来之后,再根据员工的dad去查询咱们当前的部门信息,OK吧,好,那我们现在呢,咱们这就写完了是吧,然后写完之后下面咱们就可以来啊,还有一个地方啊,这非常重要。
10:31
来大家看,那我们的select里面咱们写什么呢?我们现在是不是应该去访问的是我们当前这个map接口中的这个方法,然后所查询出来的结果,然后来复制给我们当前的这个,复制给我们当前的这个属性,那换句话来说,也就是说我们要来找到我们的这个circleq语句,然后是不是应该是把它所查询的结果复制给这个属性,那其实都一样,因为毕竟我们的my be里面,咱们的方法跟我们的映射文件中的SQ去他们两个是相对应的,对不对?所以说呢,我们在这儿咱们应该怎么去访问呢?大家还记不记得啊,我们之前一直跟大家说过,在我们的my bet里面,我们当前咱们的circle的唯一标识应该怎么去写,既然我们现在要去找到我们当前的这个circle,然后通过这个circleq查询出来的结果来为我们当前的第1PD属性赋值,那所以说在这的话。
11:32
那我们是不是应该写的是这个circle的唯一标识,对不对,你肯定不能在这直接来写circle的I啊,因为如果你直接写circle的ID,那咱们当前这个这个ID是不能重复的,那在一个映射文件中它不能重复,那我在其他的映射文件中,我可不可以再写一个ID为他的SQL句,可不可以,可以的呀,所以说我们应该用的是它的唯一标识,而它的唯一标识应该是谁?
12:01
有印象没有,应该是我们当前的命名空间点circle的ID,换句话来说,其实就是我们的map接口的全类名点方法名,这个其实我们在好几个地方都见过,我记得有一回报错,咱们就见过啊。他说的是我们当前咱们的这个circle,咱们当前所对应的一个circle对吧,然后执行不了,然后在这就给我们说了哪一个circle,给我们说的就是咱们的name space.circle的ID,也就是咱们的方法这个map接口的全类名,点方法名对不对,还有就是我们之前咱们在看a per这个注解啊,它的源码的时候,然后咱们当前呢,是不是有一个common的对象,Common的里面是不是就有谁呀,就有我们当前所对应的方法,所对应的circle语句,以及这个circle的类型里面呢,都是以这种方式来表示的,所以说我们现在该怎么在select select的属性里面去赋值呢?很简单,大家直接点击右键选中这个方法,点击右键copy references来复制它的引用即可,然后复制完它的引用,咱们所获取到的就是咱们的map接口的全类名点方法没。
13:21
OK吧,好,OK,大家注意这样写就可以啊,然后这个时候我们当前就来实现了一个分步查询,我们当前所获得的结果是通过两个circle查询出来了,OK,那下面呢,咱们来进行一个测试复制,大家看啊,然后咱们这个叫做get EP and,这个第1PT,然后by step OK,然后在这的话一样的啊,叫做by step y是不是啊,因为这是咱们的第一步,咱们的第二步是根据dad查询dept是不是啊,然后下面大家看好,我现在再来执行,大家注意看下面咱们的circle的输出应该是几个circle,应该是两个circle,因为我们现在是通过两个circle口来查询出来的这一条数据,对吧,大家看一下,第一个先根据咱们的E查询员工信息,然后第二个是根据我们的员工所对应的did来查询部门信息。然后最终咱们。
14:21
就能把这个结果给查出来。OK吧,那这个是我们当前咱们的分部查询。然后我们可以将我们当前咱们在多表连查的过程中,对吧?然后把我们当前一个完整的过程,然后把它给分布来进行完成,那有的同学说老师这样做有什么样的好处呢?对吧?咱们的分步查询有什么样的好处呢?对吧?这个咱们一会再说来,咱们先在这呢,然后把我们的这个笔记先来写一下啊呃,咱们先找到咱们的EP map点叉L对不对,然后在这大家看好这里面咱们的属性,然后有select。
15:00
对吧,这个select来设置的是谁?大家说是不是应该是来设置,然后咱们分布查询的circle的唯一标识,那什么叫唯一标识呢?大家注意,唯一标识就是咱们的name space.circle的ID,然后或者说是咱们的map接口的全类名,然后点方法名,这个大家注意啊。好,然后再往下,然后咱们的第二个叫做卡,这个东西又是干什么的,这东西是不是应该是用来设置分布查询的条件,分布查询的查。寻的条件,OK啊,行,这个大家注意,Property就是我们需要处理的实体类中的属性,多对一的属性,OK吧,好啊,行,那这是咱们的分布查询,大家注意啊,这里面咱们写的东西比较多,但是呢,咱们的方法名写的,希望大家能看懂啊,咱们在这叫get EP and depd by step one,然后我们在。
16:09
这个地方第1PT里面。咱们叫get e and de PT,然后by step two。OK吧,这个大家一定要看好啊,行,那这个是我们当前的分布查询。
我来说两句