00:00
好呃,接下来呢,我们再来给大家去说一下,是as呢,还支持一个叫做分布查询好从as,然后呢啊使用我们的这个分布查询,好呃,什么叫做分布查询呢?先来给大家去解释一下啊,就是分布查询嘛,就是分开步骤对吧,一步一步的去来完成这个查询啊,那么比如说我们就拿上我们现在的一个这个需求来去给大家分析一下什么需求呢,还是我们查询员工信息,并且呢,查询我们这个员工所在的啊部门信息,还是这个需求,刚刚呢,我们是通过一个表连接的方式啊,就通过这个多秒查询,把这个数据呢,就给他查回来了,那么其实这个操作呢,我们也可以给他什么分成步骤啊,分开步骤来查,比如说我第一步呢,我就先根据员工的ID查询我们的员工信息好。
01:00
那么把这个查出来以后呢,大家注意啊,在员工信息里面,我们是不是就有一个外建啊,有没有外建啊,有吧,你看吧,我先把员工里面的这个数据,比如说我先把这一条数据的给他查出来了,查出来以后我是不是得到这个外建了,那我再拿上这个外建呢,到我的部门表里面去查一个他所对应的这个部门是不是可以了,所以说第二步我们就要做的事就是什么呀,诶使用我们的好外键,就是我们的第下划线ID,然后呢,哎,查询我们呢部门信息,这样的话呢,我们就最终呢,也能查到员工信息,也能查到我们的部门信息,但是呢,他们两个是分开来做的,能明白这个意思了吗?OK,好,那么如果想要完成这个需求的话,我们还得再去写上一个DAO接口,为什么呢?呃,实际上在我们的这个开发中的话,对于每一个实体类来讲,不管是employee来讲,还是这个department来讲,他们都应该要有与之对应的一个C。
02:00
操作能明白什么意思吧,所以说你看下这里面我要使用外键去查询部门信息,相当于就是使用部门的组件来查询它吧,对吧?那么这个主要是来查部门的,因此我们就应该对应着提供上我们部门的一个正删改查操作,那么现在我们暂时呢,会用到一个根据外键,外键其实对应的就是部门的组件,我们暂时用到的是根据部门的组件查询部门的信息,因此我们要再给他提供好一个接口,然后呢去提供上一个对应的方法,那么接下来呢,我们就可以去使用这个分布查询了,好,所以说呢,我们来把这个加一下,首先呢,我们要去写上一个接口,好,大家都跟着我来听啊,Department,然后呢,好,我们叫做什么呀?还叫做杂map,看明白了吧,然后这个里面呢,我们提供上一个方法,什么方法呢。啊,Public我们查的是一个部门,然后呢,Get ded啊,Dept啊,BY我们的ID啊,其实就通过它来查的,然后呢,传上一个ad的ID好,那么这就写好了,写好以后呢,我们也要对应着它是不是得有一个映射文件啊,对吧,把这个来改一下啊,我们叫做department map,好把这个写好,写好以后呢,在它里面大家注意这个首先要去改了吧,能理解吧,把这个改一下,然后剩下的这些东西呢,我们就都把它删了啊,然后这里面的话,我们再把刚刚写好的这个方法呢,给它拿过来,好放到这个位置,我们再把这个select去写一下,ID呢,就是我们的方法的名字,然后因为它是单独查这个部门的,所以说我们可以直接使用自动映射吧,对吧?哎,你不要讲了,这个自定义映射以后,自动映射你就不用了是吧,你该用了还是去用了。
03:57
好,来把这个全类名的给他拷贝过来,拷贝过来以后呢,我们就放到这个位置,好,这里面的话我们就直接来写一下select ID要直接写,然后呢,第PD_name这个我们就得取别名了吧,因为它自动映射呢,它也完成不了,因为我们的名字是不一样的嘛,看到没有对吧?所以说我们就必须要给它取一个别名啊,Department name,然后呢,From t PL depg v ID等于井号大括号ID这个是不是写好了对吧?那么现在呢,我们就已经要诶可以通过部门的ID呢去查询我们的部门数据了,那么接下来我们再回到我们刚刚提出需求的这个位置,好,我们就回去啊写这个需求了啊好,那么首先呢,我们还是回到这个尹employe啊,他的这个接口中呢,加上一个方法还是查员工按的dept,但是呢,我们用的是一个分部的查询啊,加上一个step。
04:54
能看明白吧,把这个呢,CTRLC拷贝到我们的诶这个位置,好把它写到这个位置,我们来写一下这个方法啊,它也是一个select ID呢,就是我们的方法名字,然后这里面肯定用的是map了啊好,这个地方的话,我们也要提供上一个map,然后呢,ID呢,我们取一个叫做myp and dept加上个step啊把这个拷贝过来放到这个位置。
05:27
那么接下来我们来做,像他说,诶,你要分成步骤来做,那么第一步呢,我们要根据员工的ID去查询员工的信息,因此在这个里面我们写的搜狗语句呢,就不再查部门了,我单独的查员工写last ID last_name你email要真的注意D_ID现在就必须要查了,能明白吧,因为我们一会要用到它,好from我们的TB employ where ID等于井号大括号ID,这个是不是查到了对吧?查到以后呢,大家注意了啊来在这里面呢,首先我们要完成我们最基本的员工的映射啊,我再把这个过程写一下ID,结果机里面是就叫做ID啊,这个能理解吧,好,这里面把last下划线内映射到我的last name上面,好,再来写把我们的email哎,映射到我们的email上面,再来写把我们。
06:28
用到针的,哎,映射到我们的针的上,好,这就写好了,那么接下来呢,我们就要去映射我们的诶部门相关的数据了啊,现在我只有一个部门的ID,就这个外建网,所以说啊,我们现在用的这个association呢,我们就叫做什么呀,注意它是一个分布查询,怎么个分布法呢?现在我是不是要去诶使用外界查部门信息了吧,那么相当于我要去调用到另外一个查询啊说说呢,这个位置pro我依旧是给我员工里面的这个部门属性给他赋值,但是呢,给他赋值的时候呢,我不是去。
07:08
发送什么搜后语句,不是说什么在这里面再去,哎写什么搜后语句啥的,而是什么呀,通过一个select,这里面有一个select,我通过select呢,去调用一个查询调用谁呀,就是调用我们部门里面是正好就有一个根据ID查部门的这个方法吧,对吧,所以说这段我要怎么写呢?我写的就是来部门的这个麦里面的来注意他。里面的谁呀,注意这个方法能看懂吗?好,那我就把它写到这个位置了啊来这个车比较长啊,好,那我就把它写到这儿,那么就相当于对于我这个属性的复制来讲,我是通过这个查询呢来去得到这个结果的,那么我们在调用这个查询的时候,我们是不是应该要给人家传进去一个参数啊,对吧?而这个参数怎么传呢?我们通过一个叫做。
08:07
啊,Column来去传啊,而这个指定谁呀,你看你现在想要把谁传到这个方法里面啊,是不是把我们上一个查询里面的did传过去吧,对吧,所以说你就直接把结果集里面的D_ID就给他什么,哎,把这个就是我们第一次查询出来的地下划线ID传到我们的这个查询中,而这个查询呢,它就可以根据我们传过来的这个组件呢,诶把这个部门数据呢,查完,并且得到一个部门对象,哎,这不能直接这么写是吧。不能直接这么写吧,啊,其实也可以啊,我们是不是把那个别名给他开启了呀?啊,原理上也可以啊,但是呢,我还是改一下吧啊好,最后呢,他就能帮我们查到一个部门对象,再把这个部门对象呢,诶就相当于赋值给了我们员工里面的这个dept了,说出了这就是一个分布查询,明白了吗?就是我调用了一下,诶你部门里面的一个查询分开步骤去走的,而我们一开始写的那个呢,它其实是通过一个诶多表的一个查询的,这是不一样的,能明白了吗?好,那么接下来我们来测试一下我们现在使用的这个分布查询,看看效果,诶跟我们想的一样不一样,好,来回到我们的测试类里面,那我再去写上一个方法吧,好,测试我们的这个association啊。
09:35
好,这是我们的这个association OK,那么在这里面的话,我们怎么写呢?来直接调哪个方法呀,My get,我们的是不是带的这个呀。对不对,来调这个方法啊,还是把1005传进去,那么传进来以后呢,最终呢,我们这个结果应该都是一样的,来运行一下好出了个问题是吧,出了个啥问题啊,说这个有一个什么找不到class是吧,找不到哪个类啊,解析不了一个别名什么一个双引号是吧?可能是我们哪个地方写错了啊,我来看一下啊,找不到一个class,哪个地方是空的呀,我们看看啊。
10:19
啊。第1PT来看这里,这个也没问题吧。好,这个最后给我返回一个部门department map,这个也没问题啊,好哪写错了,看一下啊,它都存在到这个里面啊,这里面有问题了,然后呢,呃,我去解析这个result map的时候,叫做step的时候啊,出了一个问题,说这个解析的时候呢,有一个build exception啊,解析不了一个class type类型错误,解析不了一个al一个什么呀。
11:10
就一个双引号是吧,他说的意思就是在解析这个东西的时候出现了问题,哦,我这个上没写是吧啊嗯,那好吧,那写谁呀,写的ept啊,你还是查一嘛,是吧,这个忘写了是吧?来把它加上哈,我加上以后再来收拾一下啊。好A选一下,好,那么现在我们来看这个结果,最后的结果是不是一样的呀,但是我们注意看哈,过程不一样,几条色后句啊看一下第一个我是不是先查员工啊,对吧,第二个我不是再去查我的部门啊,能看到吗?第一个查员工的时候是根据你给的1005,第二次查这个的时候是根据我们第一个查询得到了这个四是不是去查的呀,对吧,再通过四呢,诶就把我们这个最后的结果就给他查回来了,所以说呢,我们现在能看到的就是,诶结果是一样的,但是过程是不一样的。
12:09
能明白吧?啊,为什么要去讲这种方式呢?诶,有这么几种情况啊,有这么几个原因啊,第一个原因就是我刚刚说到的,在实际的开发中,你部门里面,员工里面,以及其他的这个实体类里面都应该要有真删改查的方法,那么你既然你都有这个方法了,那我就可以去调用了,我不必要自己再去写一次,听懂了吧?那么其实还有一个原因是什么呢?就是分布查询,我们是可以使用一个延迟加载的,好,接下来我就要给大家去说一下,分布查询的时候,我们再去使用一下延迟加载啊,那么对于这个分布查询呢,我们就先给大家说到这啊,这个都能理解了吗?可以了吧啊。
我来说两句