00:00
好来,我们接着往后说啊,呃,刚才呢,给大家去讲了一下my be的这个hello word啊,我们已经把它都写完了,呃,然后呢,呃,大家来分析一下啊,其实现在我们写的这个my bed的这个hello word呢,呃它呃并不是就是我们最啊最终的一个结果啊,所以我们最终再去使用买呢,并不是啊这么来去用的啊,所以说呢,呃接下来呢,我要教给大家另外一种方式啊,就是我们基于。买的一个map接口来去开发啊呃,首先我们来分析啊,就将来的话呢,我们在我们的这个DAO啊这一层中啊,比如说这是我们这个DAO能理解吧,那么在DAO里面的话,我们就会有这个增删改查的这个方法啊,也就是我们这个c rud是吧?啊有这么几个方法,然后呢,每个方法中的话呢,我们是不是都得去啊,通过一个这个s session啊,通过这个对象来去呢,去调用它这个相关的方法来去完成这个操作吧,对吧,那也就意味着我们将来是需要把这个so session给他什么想办法,是不是注入到这个DA中的。
01:07
能理解这个意思吗?对吧,因为你看嘛,现在我是在这个测试类里面嘛,那么将来你就把这个方法呢,想象成是我们的DAO,在DAO中的话,我有这个具体的方法,那每一个方法里面,你要完成这个增删改查,你是得使用这个三生对象去做的,对吧?虽然说现在我只给你演示了一个select one,但是呢,大家应该也能猜到,这个三生里面肯定是有我们的,比如说更新update,删除delete以及添加,那就是我们的insert是都有这个方法的,对吧?诶这些方法都是有的,那也就意味着我是可以完全基于这个诶三重对象呢来去完成我们的这个正常改查的。能听明白吧,OK啊啊,但是呢,这种方式呢,并不是特别好啊,并不是特别好,因为什么,因为我们把这个30对象呢,还有什么给它去注入到我们这个DAO中啊,注入到这个DA中,这种方式不是很好啊,那么接下来呢,我要给大家去讲一种比这种方式还要好的啊,就是我们的micro接口开发,啥意思呢?呃,我们刚才呢,其实已经分析到了这个DAO了,那么在我们的一个实际项目中,我们除了我们的比如说handler service,那么DAO肯定必须是要有的,也就这个东西我们一定是要去写的,那么买edit,它就提供了一种基于这个DAO接口来去完成这个真删改查的这种方式。
02:25
能理解吧,哎,所以说呢,我们将来呢,只需要把这个do接口给它写出来,然后呢,在基于买be的这个map接口开发,那么我们写起来要比这种方式还要简单,好来接下来我们就来做一下啊啊基于这个麦接口来去开发,好啊,那我还在这个测试类里面呢,我再去写上一个方法,好直接来这来这写啊,测试一下我们的test的hello word啊,我们基于是那个迈接口啊,好加上我们的test。
03:01
OK,呃,那么在这里面的话呢,我们还是需要把这个是不能把它获取到的是吧,最基本的这个东西呢,我们还是要有的啊好有一个异常好抛一个什么异常出去好,然后接下来呢,获取你的这个搜session啊,这个我来手动写一下,好等于什么呀?啊,就等于我们这个so session factor好呀,Open是不是获取到了对不对,获取到以后呢,接下来我们就可以去,哎,好finally,然后呢,在这里面呢,我们就可以来把我们的这个session先给他关一下,然后呢,这个位置注意,我们就不再使用刚刚的这种方式去做了,而是要什么使用我们的迈接口来开发,那么这个迈接口呢,给大家去解释一下啊,买贝里面呢,叫做是map接口,其实它本质上就是我们的DAO接口,能理解吧,就是我们以前写的那个DA。
04:02
联用接口,只不过呢,在买里面呢,它更习惯性的教程这个map接口,那我们就来想,现在我要基于这个map接口来去开发的,首先我是不是得给人家去提供这个接口啊,对吧,你看哈,接下来我要做的事就是什么呀,回到我们的这个,呃包下面我再去用上一个。Package啊,这个package呢,我就叫做什么呀,第一次我就叫做DA了,好吧,对于这个employee的一个操作来讲的话,我就要给他提供上一个接口,就叫什么L,能看明白吗?这就是我们的一个迈接口,然后呢,这里面的话呢,就会定义我们的,呃,就会什么定义我们这个CR用地的什么,哎,相关的这个方法啊,那么现在我们现在这个抛开这个买不说啊,如果说你自己去写个接口的话,那这个方法大家会不会写会吧,比如说我们现在就来写一个根据ID什么呀,根据ID查询我们的这个employee,好,那我这个方法写出来就是public employee,然后呢,Get employee by ID OK,我就写到这,然后呢,传上一个ID进去,那么这个接口是不写好了。
05:12
方法是不是写好了,OK,好,以前的话呢,我们写好这个接口以后,接下来立马是不是要去写一个十材类吧,但是注意了啊,再买白里面我们不需要去写13类,听懂了吗?哎,如果说你还要去去写这个13类的话,那就显得特别麻烦了啊在买be里面,我们只需要提供接口,不需要去写事权类理解了吧,为什么呢?因为买be它会帮我们通过代理的方式来帮我们去生成这个事材类的理解什么意思吧?啊,那么你把这个接口写好以后,我们怎么把他们这个关联起来呢?对吧,怎么就成了买be这个map接口开发的呢?注意我们需要进行两个绑定,好来我写到这个位置啊,好,那么ma接口提供好以后呢,接下来我们要完成的就是什么两个绑定,我来给大家分析哪两个绑定呢?第一个绑定。
06:09
好,第一个绑定我们来看,现在我这个映射文件有,我这个接口有,那么我们来想哈,虽然说我们不用去写这个接口的实现类了,但是接口里面的每一个方法将来就是什么具体的一个操作吧。是不是你看我们刚刚写的这个查询,那么这个是不是一个具体的一个操作。能理解什么意思吧,哎,这就是一个具体的一个操作,好,那么这个具体的操作的话呢,我们就必须要去对应一个什么呀,是不是对应一个这个搜口语句啊,能理解什么意思吗?而现在我们的搜口语句大家需要注意啊,我现在的这个搜口语句呢,是全部都写到了这个映射文件中的。能理解吧,那我就得让买知道你这个接口里面的方法要用到哪个映射文件里面的so后语句。能理解这个意思吗?
07:02
能听得明白吧,OK,就是你接口里面呢,他不是有这个方法吗?那么这个方法虽然说我们不写13类的,将来买be会给你生成这个13类,那么你就想在13类里面对这个方法做实现的时候,他要去查询是不是得用到一个sol语句,而这个sol语句呢,买be去哪找呢?那你就能告诉他你到这个里面去找,因为这里面有你需要的so号语句,能听明白吧,所以说呢,我们要完成的第一个绑定呢,就是把他们两个绑定到一起,这样的话,买卖地的才能根据你接口里面的方法去找到我对应的售后语句,帮你去做这个实现,然后呢,最终帮你完成这个真删感他的操作。好,输出呢,第一个绑定我们要讲的就是,就是我们这个micro接口好与什么呀,与这个搜QL映射文件的绑定,明白了吧?哎,就是这个麦接口与这个搜QL映射文件的绑定,好那么完成了这个绑定以后呢,我们再来分析,现在我把这个接口诶与这个映射文件呢绑定到一起了,好他们两个是能什么?诶,就是通过接口去找到这个映射文件了,但是我接口里面会有N个方法,我这个里面是不是会有N多条S语句啊,对不对,那你想一下,这个方法与这个具体S语句之间是不是也得有一个对应关系啊好,那么这就是我们要完成的第二个绑定,我得告诉买贝,比如说我接口里面的这一个方法,我要到这个文件里面去找每一条搜后语句吧,是不是,所以说我们要完成的就是来迈接口的。
08:43
好方法与什么呀?与搜Q映射文件中好与搜映射文件是什呀,这个具体的搜Q语句的绑定,具体啊搜口语句的绑定啊呃,那么这个怎么去绑定呢。
09:03
或者说这个怎么绑定啊,这个我们只是告诉大家的什么要完成两个绑定了,怎么把他们这个具体的绑定起来呢?来听我讲,对于ma接口与这个搜映射文件的绑定来讲,我们要做的事就是什么呀,在micro micro映射文件里面的这个name face里面,我们就不能随便去写了,我们必须要把它指定成我们的接口的全类名,听懂了吧,就是,这就是我们完成的第一个绑定,怎么绑定的?就是呃,映射文件的内SP值啊,必须指定成接口的全类名,能听懂了吧?哎,必须要去指定下我们这个接口的全类名啊,所以说现在我们就要把这个接口的全类名来copy一下,Copy过来以后呢,我们就把它什么放到这个位置,能看明白这个意思了吧?哎,这是我完成的第一个绑定,那么第二个绑定怎么绑定呢?就是哎,你看一下接口的。
10:03
方法与这个映射文件的搜狗语句的绑定,那你想想我怎么就能让我接口里面的每个方法与你这里面的每个搜Q语句绑定上来啊。哎,就是注意了啊,这么来做的,怎么做呢?就是接口的,就是搜口语句的ID值啊,必须指定义成好接口的什么呀,方法名好,那么大家来看一下,比如说对于我当前的这个方法来讲,好来CTRLC,那么将来我在这个映射文件中肯定是要有一个与之对应的so后语句吧,来比如说我们来把这个写一下啊,我把这个方法呢写到这好与这个方法所对应的搜口L语句,那就是一个select,然后这个ID呢,我们必须要去指定下我们接口的方法的名字,这样我就可以把它们绑定到一起了,好,这里面我们再来写一下。啊,等于什么呀,还是把这个值拷贝到这。
11:03
好,来之后这个select里面的这个骚方语句呢,还都是一样的哈,我就直接拷贝一下来放到这个位置,能看明白了吗?来放到这个位置,好,这样的话你看一下我通过这个把什么呀,把他们两个绑定到一起,再通过这个来把什么呀,把这个方法呢,与你的这个搜狗语句就绑定到一起了。看明白了吧,这就是我们完成的两个绑定好,这两个绑定完成以后呢,接下来大家注意,对于我的这个测试方法来讲,你完成了绑定以后,我们接下来要做的事就是什么呀,你想一想,我要去查询了,那我是得调入接口里面的方法呀,但是因为这个呢是一个抽象啊,稍它是一个接口方法呢,也是一个抽象的,我们就没有办法去直接使用吧。对不对,所以说我们接下来要做的就是想办法获取到这个接口的一个具体的实现类对象,而这个实现类呢,不需要我们写,所以说呢,我们直接获取的是什么呀,获取啊,My be啊,为什么呀。
12:09
为什么呀?哎,为我们这个麦接口生成的,好接口生成的,注意它是通过代理的方式啊,代理实现类对象把这个获取到。怎么获取呢?其实也特别简单,那就是我们要获取的是不是这个deploy map类型的呀,对吧?那么我们之前在讲这个动态代理的时候,就跟大家说过,有一个接口的话,那我会通过JDK的这种代理方式来生成吧,对吧,那么这是我的一个接口。啊,这是我的那个什么map接口,就比如说我们这个employ DAO啊,就是它,那么我们具体的一个实现类的对象啊,与这个代理时现类的对象是都是实现的这个接口的,所以说现在我获取的这个代理实现类对象,我是就可以要复制给接口类型的一个变量,能理解这个意思吧?好,那我们就写个map,怎么获取呢?我们通过塞在这个塞里面呢,有个方法叫做get map在get member里面,我们只要传上你要获取哪个接口的时三类对象我要获取的是employee matter啊稍啊,我要获取的是employee DAO是吧,我们写的是DAO,那么还是把它改成DAO,我要获取的是employee DAO哎,这个类型的一个代理事项类对象。
13:30
能听明白这个意思吧,好,那么最终呢,他就能帮我们返回一个具体的一个什么食材类对象,然后呢,我们再通过这个matter,好,还是叫做DAO吧,是吧,第一次的话呢,让大家好理解一点啊DAO,然后接下来你看我是不是会调用它里面这个方法了,对不对,那么调这个方法的话,我们船上比如说还是1001,然后呢,最终呢,给我返回一个employ对象,OK,把它返回回来,我们再把这个呢,给它输出一下这个employee对象,好那么这个其实我们就已经把它写好了,好然后呢,我们来测试一下,看看这个结果跟我们想子一样不一样,大家来看一下这个数据,查回来了没有,回来了没有回来了吧,是不是回来了,OK,好,那么我们能看到这个结果,那我们再来简单的分析一下这个对象,看一下它到底是一个什么类型的啊dao.get class.get内。
14:30
来,再来运行一下。好,大家来看它是一个什么呀?Dollar process,这个是不是就是我们之前讲过的那个JDK动态代理里面那个类型啊。对不对,所以说呢,这个位置呢,它其实也是用到了我们的一个动态代理,帮我们去生成一个接口类型的一个代理实现类,明白吧,再获取到那个代理实现类的对象,我们就可以通过这个代理实现类的对象呢,去调用接口里面的方法,那么最终呢,我们就可以啊,诶查到我们具体的一个结果。
15:06
明白这个意思了吗?听懂了吧?OK,所以说呢,呃,现在我们再来分析一下,大家知道了这个micro接口这个东西以后,那么以后我们再使用这个买的时候,因为这个DAO接口你是绝对要去写的,是不是?所以说我们以后再来开发买Dis的候,其实我们主要就做两件事儿,哪两件事呢?第一个写接口,第二个就是写接口所对应的搜Q映射文件就行了。你想想是不是啊,接口里面写一个方法,OK,那我的搜映射文件里面就加上一个搜口L语句与之对应起来,接口里面再写一个方法,那我在这个里面的再写一个so口L语句与之对应起来是不是就可以了?明白了吗?所以说这才是买be真正强大的地方,因为他直接切入到了你这个DA,哎这一场是吧,你在一个实际的项目中,Do你是必须要去写的,好,那我就基于你的DAO接口来去帮你啊做你的正删感压操作,那么大家来对比一下这种方式好呢?还是我们第一种讲的这种方式好。
16:12
肯定是第二种好,因为第一种的话呢,你还得去了解三省它底层的一些方法,而对于第二种来讲,你三省是啥,它里面有什么方法,我都不用去管,我只需要按照你的要求,给你提供上一个接口,再提供上两个绑定啊这件事儿就可以了。明白了吗?这就是我们的matter接口开发好,那么讲完这个以后呢,我需要再来给大家去说一件事啊,正常情况下在买VE里面,如果你要去写一个DAO接口的话,我们不再建议大家叫什么呀,叫什么什么employee map能理解吧,诶,不要叫什么,呃,不,不是叫这个employee,什么DAO啊,不要去叫这个名字了,而是叫做什么名字呀,叫成employee,把DAO换成什么呀,迈,因为什么呢?因为人家的这个双方映射文件呢,也习惯性叫成什么什么什么map,检查没,那我们的接口呢,也要叫成什么什么什么map,叫Java。
17:13
明白了吧,就是我们要按照人家的这个习惯去写好第一次,为了让大家更好理解呢,我是教成了DAO了,但是呢,以后再写的时候我就不再叫DA了,我就直接都改成map。听明白这个意思了吧,OK。
我来说两句