00:00
来我们接着说啊,呃,那么现在的话,我们就已经把这个association它的用法呢就研究完了,那么其实呢,买Dis呢,还帮我们提供了,哎,另外一个标签啊,叫做这个collection,呃,那么这个collection呢,其实跟这个association的这个思想是差不多的,都是来完成一个啊这个关联属性的一个映射的,但是呢,这个association嘛,主要负责的是单个类型的,比如你就是一个单个对象,对吧,就像这个引employ里面有一个DPD对象,那如果说我们还有一种情况就是什么呀,我的这个联合属性呢,是一个集合类型的,比如说我的部门里面有一个员工的集合,Emps的一个集合,那么像这种方式的映射呢,我们就得使用这个collection来去完成了,能明白吧,所以说接下来我们就把他们反过来来研究,刚才研究的是查员工,查部门,现在我要研究的是查部门,并且查员工,听明白了吗?反过来了啊,好吧,那我们就回到我们的部门里。
01:00
点是不是这个位置啊,部门啊,来,我要写一个查询谁呀,查询部门按什么呀,并且查询部门里面所有的员工啊,我同样提供一个部门的ID,能看明白吗?OK,来吧,那我们拿把它拿过来,拿到我们的这个映射文件中去写一写啊,同样也是一个select啊,啊那么这个ID呢,就是我们方法的名字,然后呢,这个位置肯定就要使用我们的result map了,对吧,因为你从多个表查了嘛,下面呢,我再给你提供上一个result map,最终的类型的话呢,返回的肯定还是我们的一个部门对象啊,部门的话,ID的话我们就叫什么呀,就叫做my DBD and什么emps能看到吧,来把这个放到这,那行吧,我们就来看看这个应该怎么写,首先我们是不是可以通过一个表连接的方式把它写出来?可以吗?可以吧,那那我们就写一写啊,那是还是回到这啊,回到这,我们把这个搜给大家放到这儿,现在我要什么呀?查部门好,并且查询什么员工啊,就是查询部门下所有的员工信息啊,你看一下是吧,研究来研究去,还是这两个表,那这个怎么写啊。
02:25
啊,这个写起来方式还是比较多的,对吧?啊,反正你就记住两个表肯定要从两个表查了,那么从两个表查的话,我们就既可以内连接也可以外连接,你就根据你实际的情况去选择就行了,好吧,那比如说现在我们用一个呃外连接吧,可以吧,使用一个外连接啊,那就怎么查呀,那就from t BL DB gd,然后呢,外连接那不就是left轴外人吧,After joining谁呀,T BL employeeee,好,取个背面EE对吧?那么用了这个join以后呢,你就必须要使用这个on了吧,On什么呀,On d的这个ID是不是要等于E的D_ID啊?
03:12
对不对,OK,好,那么现在我用的是一个什么连左外联吧,行吧,那我就问大家一下这个外连接它的结果地是怎么取的,外连接的结果地是怎么的啊,啊不是这个点是吧,外连接外连接的结果机怎么取的?记不记得?两个表,那肯定两个表嘛,两个表怎么取啊,怎么取结果集啊,啊全取还有别的答案吗?啊忘了啊,那这样来呃,先不要考虑连接了是吧,我问你内联你怎么取结果机啊,刚刚我是不是说过呀,对吧,你一定要记住哈,同志们,这个东西你要说连接的这个结果机你记不住,那你就不知道什么时候用哪种了。
04:25
好吧,来说一下这个内连接呢,我们取的是什么呀?取交集,啥叫做交集知道吗?你有的我有的才会取出来,你有的我没有的,或者说我有的你没有的是不会取出来的交集吗?对吧,这个东西啊。诶,我的圆呢,哎,这是一个表,这是另外一个表对吧?这个部分叫做什么呀?交内连接,这叫做什么交际是吧?这是内连接,内连接呢,就取这一部分数据,明白了吧?好,那我再来问大家啊,嗯,外连接,比如说左外联吧,左外联啊,我取什么积啊,这是我的一个表,能明白吧?这是我的另外一个表行我问你左半脸区哪部分数据,左边的这一部分包含这一部分吗?然后呢,这一部分呢,不包含了,OK,那你说这就是怎么取的表,左表的全部去对吧,右表的呢,去取消去与它什么交集的地方吧,啊,你不要说。
05:49
左表右表嘛,是吧,这个外连接呢,我们有这样的一个概念啊,你这个相关的概念你得说准确一点啊,就是呃,外连接的话,我们其实分这个左外联右外联吧,左外联右外联其实原理是一样的,你只要记住什么呀,记住它里面的主表与从表是不是就行了,听说过这个概念吗?那驱动表匹配表呢。
06:15
也没听说过呀,我告诉你啊,外连接呢,我们一定要去区分这样的概念,什么概念呢?就是主表,我们又把它叫做什么驱动表,然后呢,重表我们又把它叫做什么呀,匹配表,好匹配表啊,可能现在呃,这个这个是不是现在老师教的时候已经不说这些概念了啊,那反正我们那会儿。就是怎么着的啊,可能我还能停留在好几年前是吧?啊没关系啊,反正这个概念绝对是没有没有错的啊,你就记住外连接的时候,你一定要去想这个主表与重表,或者是驱动表与匹配表,比如说A左外联B啊,就是left左外联B它就是主表,它就是重表,A右外联B它就是主表,它就是虫表,左外联看左边,右外联看右边,明白了吧,哎,所以说你看啊,就相当于A左外联B与什么呀,与B右外联左效果是一样的。
07:21
对不对,效果是一模一样的,那么取什么集呢?你就记住主外连接是什么呀?主表都要对吧?虫表呢?交集,虫表取什么呀?取与与主的什么呀,交集。你就把这个记住就行了,剩下的我就不要了。听懂了吧,剩下的我就不要了啊啊啊,你这个东西你必须得记清楚了啊,同学们,你要说这个东西你都记不清楚,那么你在遇到一个糟糕语句的时候,你知道我要连接了,但是我就不知道怎么连。对吧,我都知道要取什么值了,取什么这个取什么结果值了,但是我就不知道怎么连着把这个结果一取出来。
08:03
所以说你必须得清楚每一个连接它的特点是什么,好吧,啊,就简单说这么两个啊,其他的我就不再跟你多啰嗦了,OK,我那我们现在把这个sool语句写完,呃,那现在我们已经把表连接起来了,那么接下来啊,条件也给出来了,那你就可以写什么了,Select了吧,比如说D的I did,然后呢,E的dept_name啊,E的IDDE的啊,Last_name啊,E的什么呀,Email,然后呢,E的真DA是不是都给它取出来了,对吧?啊,From这个表,然后呢,最后呢,给个ID吧,Will什么呀,Will这个D的ID,比如说我们查哪个部门的呀。看看这个数据啊,比如哪个哪个部门的比较多啊。哎哟,这个都没值是吧,都没值,我给他改一下吧,好,反正就1234吧,总共是来123443211好吧,都把它改一下,然后呢,保存一下哈,好这样的话我们都有一个外键了啊,那我们就随便查了啊,查谁都无所谓了,比如说我就查谁啊查这个四部门吧,对吧?来回到这儿啊,我们把这个写上,比如说我要查的就是第四个部门的,好等于四来执行一下。
09:24
好,大家来看,这就是我们。四部门里面的一些数据看到了吧,OK,那我把这个结地拿到了,拿到以后的话,我接下来怎么封装啊,那我们就回到我们的开发工具中啊,来把这个语呢拷贝过来,好回到我们的这个开发工具中,那么刚刚我们写好了这个是把这个so后L语句放进来啊,好把这个后面的改成井号,打括号ID搞定好,那接下来你就来封装呗,呃,这个里面我们封到谁呀?对于这个部门的封装来的特别简单,这两个值是不是固定的呀,对吧?所以说我们依旧使用ID好列那就是我们的啊didd给到我当前部门的谁上面呀,是不是ID上面啊对吧,大家在写的时候呢,你就以谁为基准啊,你就以这个that map里面这个tap为基准,听懂了吧,以它为基准,先给它做映射,映射完以后呢,再去映射他的联合属性啊好查回来的第1PD下划线内蒙我要映射到谁上面的,映射到我们的depart内上面吧。那么接下来大家。
10:27
注意了,接下来就是谁了呀,就是我们查回来的这些数据了吧,这些数据它不是单个的,所以说呢,我们必须要通过一个collection来映射成一个集合啊,也就意味着这个位置我们要通过collection来去映射,好给大家稍微解释一下,这个collection呢,就是什么呀,它主要就是完成这个集合类型的联合属性的这个映射的,明白了吧,这个里面property依旧指定的什么呀,指定我们的联合属性嘛,好,那么现在指定谁呀?对于我这个部门里面是不是有一个。
11:06
应该有一个谁啊,没写是不是还写上哈,这里面是不是应该有一个叫做employee的一个集合吧,是得有个他啊,对吧,部门里面有多个员工嘛,那不就通过一个集合来表示吗?行吧,来导个包,然后呢,再加上我们的盖赛的方法,好加上盖赛的方法。水中加上看到了吧,把它加上以后呢,来再回到我们的这个部门这个地方啊,回到这个地方,那这里面我们写的是谁啊,是不是写的我这个部门里面的EPS了吧,给他要做映射了啊,那把这个EMS写到这儿好,那么这里面我们还得去指定一个类型,就是你得告诉买贝蒂,你要把这个结果集里面的数据呢,映射成什么类型的。刚刚我们在讲这个association的时候,是用了一个叫做什么Java tap吧,对吧,但是注意了啊,现在我们不能使用Java tap,我们用用的是op。
12:01
明白吧,这个object指定的是什么呀?是指定啊集合中元素的类型,其实你仔细分析一下,跟我们讲的那个都是一个道理,你现在拿到这个结果,你虽然说这个将来是一个集合,但是集合里面每一个元素类型是不是代表了我们的一条数据啊,就相当于你的一条数据,你要封装成什么类型的,那么你在这个位置还要去指定什么类型的?所以说这个里面我们写的就是来employee类型的。听明白了吗?能听懂什么意思了吧?哎,写的是它啊,那行吧,那接下来这里面你就写什么,还是来现在就要什么呀,就要以它为基准了吧,以它为基准啊,以这个引患为基准,来它里面的列,把我们查回来的EID给到它的ID上面,来result把我们查回来的last_name给到谁上面啊好给到我们的last name上面,OK,再来写,把我们查回来的email好写到email上面,再把我们查回来的谁呀,哎,真的好给到我们的真的上面,这就可以了,明白了吗?那么这样的话呢,我们就把这个,诶每一条数据呢,都映射成一个employee对象,最终呢,给到这个集合中,最终呢,这个集合呢,诶再给到我们这个department里面,那么最终的这个结果。
13:33
我们就把它映射成功了。好吧,最后来测试一下,回到我们的测试方法中,我们再去写上一个测试方法啊,那么现在我们研究的是collection了吧?啊,那么这里面的话我们就不用这个employee了啊,我们用的是什么?Department吧,Department map啊来map等于3.getmap啊把这个department map写进去,好写到这个位置,然后接下来map.get是它呀,比如说查起来查四部门是吧?来最后再返回的就是一个什么呀,Department dept好,Co输出一下dept,来,再来输出一下我们的de BT里面有一个EPS。
14:19
看懂了吗?OK,来运行一下。好,那么现在我们来看这个接口集里面,首先你看这个部门数据是不是查回来了,并且部门下面所有的员工,你看第一个1004,第二个1005,第三个1018,第四个1019,是不是都给他查回来了,看到了吧,跟我们刚才这个结果第一样吧,明白了吗?OK,这就是一个啊集合类型的联合属性,那么我们使用的是一个叫做collection这样的标签来去完成的。听明白了吗?OK。
我来说两句