00:00
好来,那么接下来呢,我们来给大家去提出一个需求来,那我们就必须要通过我们的自定义映射来去完成啥需求呢?啊,我要在查询员工信息啊,查询员工对象,并且查询什么呀,查询员工哎所在的部门信息,OK,这就是我的一个需求两个表了吧,对吧?这种情况下你必须得使用这个自定义设了,那行吧,我们就来先看看啊,我查询员工对象,并且查询员工所在的部门信息,那很明显我要从多个表里面去查数据了,对不对,OK,这个其实写起来比较简单啊,我们来写写,首先我们先来到这儿啊,把这个搜狗语句呢给大家去先写一写,比如说我要去查询员工诶信息,并且查询我们的部门信息,这个怎么写啊?怎么写,你写一条搜后语句的时候,你要从哪方面,哪几方面去考虑啊。
01:05
啊,就是这个的话,我也教给大家一个小技巧啊,就是以前这个宋老师可能也教过你们啊,比如说对于一个这个搜考的查询来讲,对吧,你看到一个查询啊,可能也有几个字,五六个字,十来个字描述了一下,但其实有些搜狗语句确实是不好写,你别看就那么几个字,这个信息量特别大,明白吧?OK,那我们看到一个这个烧烤语句的时候,我们应该怎么去写呢?注意哈,你就从这几方面去考虑,首先我们要分析查什么。能明白吧,哎,你通过他要查什么,那么你能得到的一个结论就是什么呀,从哪些表查对不对,你先要确定好我要从哪些表去查啊,确定好从哪些表查以后呢,你再去分析什么呀,分析查询条件是什么。
02:00
能明白吧,这样的话呢,你就能得到什么呀?Where,我要过滤什么东西,明白了吧,就是你要分析查什么,查询条件是什么。听明白这个意思了吧,OK,然后呢,基本上呃,如果一个简单的查询来讲的话呢,这样其实你其实就是什么能分解出来了啊,然后还有一种情况就是什么,比如说相对来讲比较复杂的时候啊,那你还要再去继续分析查什么,还得再去分析这个查什么。明白了吧,因为这个有些他这个说的这个查的这个结果呢,他并不是要把所有的数据都给你查出来,他可能只要其中的某一部分数据,特别是对于这个表连接来讲,我只要比如说我只需要你们的交集好,那这个时候我们要确定我在连接的时候我要使用。那链接。对吧,比如说我要使用你们的什么病集,那我在查的时候,哎,我就要知道了,我要使用什么呀。外连接的吧,最起码是个外连接的吧,对不对,所以说你再去具体的分析查什么啊,比如说对于表连接来讲啊,比如说多表好查什么,那么你可以分析出来我的什么表连接方式,明白了吧,哎,所以说你就慢慢的啊,你就从这几个方面一点一点的去分析,那么其实起码你能把这个搜口语句,诶,它一些最关键的信息我们分析到了,那么你就能把这个so口L语句慢慢的给它去写出来了,听懂了吧,所以说你遇到一个这个so口L语句的时候呢,哎,你不要着急的去写,就一上来你就什么select什么什么什什么。
03:38
对吧,你哪知道你要怎么去写这个搜狗语句啊,你得先分析,你分析明白以后呢,正常写一条搜狗语句怎么写的,先写from。明白吧,我要从哪个表查了,比如说现在我分析出来了,我要查员工,并且要查部门,那起码我要从t BL employee这个表,对吧,再写一个TBL,然后呢,De pd这个表,我要从这两这两个表里面去查了。
04:01
能明白了吗?然后呢,你再去分析一下,哎,既然是两个表查了好,那我就要去分析我的表连接的方式了,我看看现在我需要怎么去连接它。理解吧,对于我现在的这个查询来讲,其实。怎么连都无所谓。对吧,因为他没有一个确定你确定的什么要求,就是你看一下查询员工信息,并且查询部门信息,说白了就是你只要能把他们两个信息查出来就行了,那无所谓,你内联外联无所谓了。明白吧,甚至于什么我就不连,我就直接从多表查是不是也行啊,对吧,那我就可以给条件就行了嘛,比如说喂,条件是什么呀。首先我要去给它取一个别名,比如说这是一个E,这是一个什么呀,D,那我就希望我溢表里面的什么呀,有一个地下划线ID吧,还记不记得打开看一下啊,这里面是不是有个外键啊,那我希望我的这个外键呢?应该要对应谁呀?对应你这个第1PD的这个什么ID吧,行,那我写出来就是什么呀,一点D_ID等于d.ID这样两个表是不是连起来了,连起来以后你再写还有一个什么条件呀,比如说查所有的,那这个东西就没了,比如说我要查单个的员工,那and是不是E的ID还要等于一个什么东西啊?
05:11
对不对?OK,你把这些连接什么的都搞明白了,接下来最后再去写select,你要查什么呀,最后再去写它能听懂了吗?不是so后一上来就select什么什么什么什么,除非说你这个东西特别熟啊,你想的特别明白,那你直接上来写,那是没有任何问题的,假如说对于一条你不是很熟的小朋友句来讲,你就得仔细的去分析它。明白了吗?哎,你直接的仔细的去分析它,分析完了以后呢,你再结合上我要用哪些搜后的技术,比如说啊关联查询,子查询,分组查询啊,对吧,或者说还要去使用上一些函数等等等等一些啊,你把这些一分析,然后呢,你再去写你的S。听懂了吧,好,来吧,我们再来把它写出来啊,这个的话比较简单,我们就迅速把它写出来,查询E的ID,这个就必须要取边名了,为什么呀?因为D的ID是不是也叫做ID啊,是吧,必须要取别名啊,E的last下划三内嘛,E的email,然后E的真的好,然后呢,D的ID啊,我就取一个什么didd是不是取原名了,D的叫做什么,DD的下法name OK,这就是我要查的数据,看明白了吧,那么最后的话,比如说我要查这个幺零零五行吧,来沈总执行一下。
06:28
你哪错了?From。多了个啥哪哪里多了东西了,右边右边地点安例右哦哦,这个东西是吧。来我们把大家写一下啊,来运行一下可以了吧,你看这样的话,我是把这个数据就给它查出来了,对吧?那么你拿到这个结果集以后,来一会我们就拿到这个结果集来给它去分析应该怎么去封装是吧?好,那么接下来我们会查了它以后呢,那其实接下来你就可以去写你的具体的一个代码了,好吧,我们先把这个方法写出来,我现在呢,其实还是去查的一个什么呀啊,其实还查的一个员工对象啊,只不过是get em p and什么dept了,对吧?啊,我要查员工,并且要查我的部门,好传一个ID进来,然后呢,我们把这个方法呢,还是拷贝到我们的映射文件中啊,来拷贝到这个位置,这就是我们的一个处理啊,然后这里面呢,写一个select ID,就是我们方法的名字,那么这个肯定就不能使用tap了,你必须得使用map对吧,然后呢,我们就先把这个map给它写出来,比方说叫做什么呀,MY。
07:57
And的depd吧,好,你随便取个名字就行,只要不冲突啊,来把这个呢,To c放到这个位置好那行,呃,这个搜狗一句我们刚刚写过了啊,我就直接拷贝过来了,就是这个搜QL语句CTRLC直接拷贝到这,然后呢,把这个100我是换成一个井号大括号ID啊对吧,这就写好了,然后呢,对于这个结果集来讲的话呢,我们也把它直接拿出来啊,大家来分析着它去写,现在我有一个结果集呢,就是这个样子的啊,把它扣出来,来放到这个位置,这个横杠去掉哈,它不允许我们写这个横杠的啊。
08:34
好,我来把这个对齐啊。好,这就对齐了,看到了吧,那么接下来你就去分析呗,这是我的结果集,然后呢,最终我是不是还要封装成一个引爆对象吧,对不对?那么这个引employ对象你要去想了哈,我去封装这些数据没啥问题,但是对象怎么封装这个数据啊?怎么分到这个数据啊,这个数据应该是要给到一个部门对象里面的吧,对不对,然后这个部门的话,应该是要在我的employee里面的一个属性吧,所以说你要想明白啊,对于数据库里面来讲,他们的关系呢,是通过一个主外键去维护的。
09:16
对吧,你看一下我的这两个表,我的employee这个表里面是不是保存了一个它的外键吧,对不对?好,这个外键对应的是不是就是我这个D1P表里面这个主件啊,这是一个他们的关系,而在Java中的话呢,是没有主外键这一说的,所以说呢,他们的关系其实是由谁啊,是由对象与对象的关系来去维护的,因此现在我们就必须要再给他提供上一个类,什么类呢?Department,然后呢,这里面我们来写上有一个的ID,有一个什么呀,类型的dept department name啊,把它写到这,然后呢,我们加上这个盖率赛的方法,好,再加上我们的初死群方法,这个是不是写好了,写好以后的话,我们还要再回到employ里面,我是不是要把他们的关系维护起来啊,就是员工里面肯定是要有一个部门的,对吧,再把他的什么概率赛的方法呢给他加上。
10:17
啊,这样才是写好明白了吧,那么接下来我们再回到我们的映射文件里面,现在我就会映射了啊,最终我要给你返回到还是一个employ对象,好在这里面映射的时候,我们注意先去映射这个employ它能封装的啊,你看ID好,就是我们结果就是叫做EID啊对不对啊,然后这就是我们的给到我们的ID上,然后呢,Result。好,这个是last_name哎,映射到我们的last name上面,好,再来写啊,Email映射到我们的email上,再来写真的是不是映射到我们的真的上面啊,OK,那么接下来呢,这两个东西我们应该怎么办呀,它是要封装成一个depd的吧,对吧?啊,我先教大家一种比较简单的方式啊,就是它其实也支持我们今联理解吧,那怎么写集连呢?你看result,我现在呢,要把我的did这个值呢,给到谁上面呀,给到。
11:25
注意了啊,给到我当前员工对象,它里面是不是有个dept这个属性啊,那我就给到谁啊,给到这个dept的ID上能看到吗?他也就是一个集点啊,来接着写这个好,这里面呢,把我们的什么呀。把我们现在查回来的BD下划线内是不是要给到我们de BD的depart name上面吧,哎,这样就把它封装好了,所以说呢,我们先教大家的一种什么集联的方式,这是比较好理解的吧,好吧,那这就写好了,来吧,那么写好以后呢,我们再来做一个测试啊,回到我们的测试方法中,呃,我们就再写一个方法吧,好,Result map,我们用到一个几点啊。
12:13
Cast啊,几点的意思。然后呢,这个位置我们调的是方法是什么呀?Map get,哎,它还传一个1005吧,好,现在的话我们可以把它输出出来,然后呢,顺带的再把我们的employee的get dept给它输出出来,是不是行了,能看到吗?来运行一下。好,大家来看,首先这个员工信息是不是查到了,并且这个部门信息我是不是也给他查到了,对吧?OK,那么这就是我们通过自定义的方式呢,再结合上我们的一个集联的这种方式啊,我们就可以把多个表的数据呢,给它封装成一个我们具体的一个对象了,明白吧?啊,那么这是我们通过集联的方式来做的,那么其实买be呢,还支持我们使用别的方式啊,比如说我们一开始给大家去提到的一个叫做association,那么一会呢,我们就用它来完成一个,哎,刚刚的那个效果。
13:08
听懂了吧,OK。
我来说两句