00:00
好,那我们现在呢,把咱们的my be里面的核心配置文件,然后呢,Map接口以及映射文件咱们都已经创建好了,那下面呢,我们就可以来测试一下它的功能了,可能好多同学呢都有疑问,那我们的map接口它就只是一个接口,它怎么就能够去对应我们当前的一个映射文件呢?映射文件中的SQL语句呢?好,下面呢咱们就一块来测试一下,好,咱们先来创建一个测试类,叫做com.at硅谷,点my be,然后点test,然后点咱们就叫做my be test OK,行,咱们先来创建第一个测试方法,先把几unit内的注解加上,然后VO,那我们现在测试的是添加功能,那咱们就叫做test insert OK吧,好,然后再往下怎么写呢?大家看好,过程呢,可能比较复杂,然后因为我们现在呢,咱们是初学买be,然后等到以后,如果说我们学习了这个spring。
01:00
去整合买杯体的话,大家就会发现这个过程会变得非常简单,那当然咱们现在没有别的方法,那咱们只能一步一步的来,首先大家先来看我们需要干什么,第一步咱们需要先来获取咱们的核心配置文件的输入流,大家注意啊,叫做输入流,那大家都学学习过IO流,大家都知道输入流是读的功能,输出流是写的功能,OK吧,那下面呢,咱们看一下怎么获取,首先呢,咱们先来找到这样的一个类,叫做蕊resource。然后大家来看,在这呢啊,不要选错了,是org点阿尔法奇点I倍斯点IO里面的,然后它为我们提供了一个什么样的功能呢?叫做get resource as stream,大家来看啊。好,然后现在我们就可以。来获取我们当前的某一个文件所对应的字节输入流,Get resource获取资源,来作为什么来获取,来作为我们的字节输入流来获取,大家看你看它的返回值就是一个字节输入流,那当然呢,我们也可以来获取其他的方式,比如说咱们在这可以来获取某一个文件,来把它作为什么对象来获取,File对象来获取,也可以把它作为一个proper对象来获取,当然呢,咱们在这呢,直接获取它的字节输入流就行,好,然后这个其实很简单,因为毕竟我们的核心配置文件中来记录的是如何连接数据库,而我们的核心配置文件中引入的又有什么呀?映射文件,也就是说我们当前映射文件中的circle,那所以我们要想来实现my be的功能,那咱们就一定要知道核心配置文件中写的是什么呀,大家说是吧,好,所以说来咱们在这把咱们的买be提斯的核心配置文件呢给它拿过来。
02:50
好,然后下面咱们就可以来获取一个输入流,那因为它是跟流有关系的,那所以说我们在这咱们就需要来把这个异常处理一下,IO异常,咱们直接把它给声明出去就可以啊。好,再往下第二步,大家来看咱们需要来获取一个什么呢?然后因为我们的买be体呀,它不像是咱们原来的GDBC了,它封装的是GDBC,所以说我们当前咱们能不能再把GDBC的过程再写一遍,不能,所以我们就需要来找到一个入口,来找到一个能帮助我们执行circle语句的一个对象,好,下面咱们来看一下,咱们需要来获取一个叫做circle session factory buildil对象,哎,Buildiler对象,然后呢,这个对象创建的时候非常的简单,咱们直接new就可以啊,叫做circle session factory build,然后再往下,我们在这大家可以看一下,你看这个类的类名叫什么,叫做circle session factory,这个东西是一个工厂。
03:51
然后呢,还有一个builder builder叫做构,叫做构建器,然后所以说它的功能的话,其实很简单,咱们想想就能够想明白,它主要是用来构建一个谁的circle session factory的,而我们的circle session factory这个对象呢,它是一个工厂对象,使用的是厂模式,它能帮助我们提供的对象很简单,遇到工厂模式的对象之后,把后边的fey去掉,那剩余部分就一定是它能够为我们提供的对象,OK吧,然后大家再来看下面咱们就需要获取谁了,来获取对吧,叫做circle session对象,怎么来获取呢?大家看circle session factory build里面有一个build方法,然后这个build方法就是构建的方法,然后我们是不是就可以直接通过一个什么来获取呢?输入流来获取。
04:41
那大家想一下,那这个输入流应该指的是谁呀?是不是应该指的就是我们当前咱们读取核心配置文件所获得的输入流对不对?好,所以咱们只需要把咱们当前的这一个is给它放进去,也就是说根据我们当前咱们的核心配置文件所对应的输入流来创建我们的circle session factory对象,好,那工厂对象获取完之后,下面咱们就可以获取什么呢?叫做circle的什么绘画对象,Circle session,然后它的作用是用来干啥?干什么呢?大家注意,它是咱们的my be,然后提供的操作数据库的对象,好,这个大家要注意,所以说。
05:27
在我们当前my be里面,Circle session是咱们的核心对象啊好,然后下面大家来看circle session factory里面有一个方法叫什么方法,叫做open session方法,然后这个方法就能够帮助我们来提供一个sub session对象,那我们先来使用一个无参的一个方法啊好,然后大家看它的返回值就是一个circle session,那我们获取完circle session之后,下一步我们又要干什么呢?我们是要来执行一个circle语句的,而我们当前咱们的SQL语句啊,是跟谁对应的,跟我们的map接口中的方法对应,那所以说我们现在咱们就需要干嘛了,来创建。
06:07
一个map接口的对象,然后来调用启动的方法,但是map是一个接口啊,大家都知道接口能直接创建实例化对象吗?不能,对吧?我们必须要去重写我们当前这个接口中的抽象方法,那这个时候我们该怎么做呢?大家注意啊,下面咱们需要来做一件事情,叫做获取我们的user map的。代理实现类对象好,然后怎么去使用,叫circle session里面有一个非常重要的方法,叫做get map的方法,叫做get map的方法,大家注意啊,这个方法,然后这个方法里面大家看一下咱们传进去的是一个什么呀,咱们传进去的是一个某一个类型的class对象,但是它帮助我们去返回的。是我们当前咱们的这个类型的实例化对象,就什么意思呢?比如说在这大家写了一个user.class那我们当前咱们这个方法的返回值啊,就是一个优点的实例化对象。
07:15
对吧,有田老师这有什么作用,对吧?我直接拗一个U,它不香吗?我为什么要来使用这个方法呢?但是大家想,如果我们现在咱们把谁给写进去啊,叫做user map.class写进去,那这个时候我们就可以来获取一个什么呀,叫做user map的对象,而user map是什么?是一个接口,那所以说大家想想,在这个方法的底层啊,它是不是会帮助我们来创建这个接口的一个实现类呢?然后把当前实现类的对象为我们来进行了返回。大家想想,是不是因为咱们的map接口能直接创建对象吗?它创建不了,所以说在这个方法的底层,它用的是什么模式,叫代理模式,然后通过代理模式帮助我们来创建了我们当前map接口的一个代理实现类,好,然后呢,既然是创建了一个实现类,那它一定是来继承实现了我们当前的user map这个接口,那它就一定要帮助我们去重写这个接口中的方法,那咱们自动生成的这个代理实现类中,它是怎么来帮助我们重写的这个方法呢?大家注意,很简单,就我刚才跟大家说的那个过程,什么过程呢?通过咱们当前map接口的全类名来找到我们当前的映射文件,然后呢,再通过咱们当前要调用的方法来找到我们当前映射文件中的SQ语句来执行。
08:43
并将结果返回,这就是我们当前重写的一个过程,当然这个过程不需要我们重写,其实大家想想,如果真的是要我们重写的话,我们也是这样去做的呀,咱们不也应该是找到一个映射文件,找到其中的SQ语句来执行嘛,对不对,这样的啊,好,但是这个过程呢,它被我们当前的get map方法进行了封装,然后它会自动帮助我们创建map接口的实现类,并且去找到相对应的SQL语句来执行,好,下面呢,我们就可以干嘛了,咱们就可以来对吧,来调用,然后咱们的map中map。
09:21
接口中的方法方法对吧,然后来实现添加用户信息的功能,OK啊,大家来看怎么写map.insert user,然后大家看它的返回值,这是咱们自己设置的返回值对不对,然后sot,然后咱们在这来写一个叫做结果冒号,然后把这个result给它加上就可以啊好OK,那我们现在咱们实现完之后,大家也可以把我们的这个s session呢,把它给关闭掉,因为这个东西是什么叫做绘画,那大家都知道绘画它其实是一个过程,对不对,然后呢,当我们当前把我们的这个CIRCLE5G执行完之后,那大家呢,最好把我们当前的circle session给它关闭掉啊。
10:10
OK,然后下面那我们就可以来测试一下了呀,大家来看好这个测试的结果,我们现在咱们来一个执行,大家来看啊。好。那我们现在咱们可以看到它的结果等于几?它的结果是一,也就是说当我们执行了我们所对应的S口语句之后,咱们的返回值是一,那其实如果这个SQ句能够正常执行,它的结果也确实是一样,对吧?那我们现在咱们来验证一下,把数据库给打开,然后咱们把咱们的T_U的呢?然后把它给把这张表给打开,然后结果大家会发现,哎,我这一刷新呢,这里面有数据吗?没有任何数据,那为什么还能把这个结果给我们输出一个一呢?大家注意啊,因为如果我们以这种方式来创建的circle session,而我们通过circle session来执行一个circle语句的话,那这个时候啊,我们当前咱们的事物是必须要我们自己去设置的,是必须要我们自己去设置事物的提交或回滚的,好,然后它是不会自动提交的,所以说我们现在呢,咱们其实还少一个步骤,因为大家毕竟你已经看到的结果就是一。
11:27
对吧,然后那说明咱们添加成功了,但是呢,在我们的数据库里面,你没有看到结果,那只能有一个原因,就是说我们当前的这个操作呀,你没有提交事物,它默认是回滚的,所以说它是没有效果的,就比如说呀,咱们可以来做一个例子,比如说咱们在这的用户名,咱们把它设置为root,密码123,年龄23,然后性别咱们给它设置一个女女,对吧,然后邮箱是12345,艾特QQ,然后点com,然后大家来看啊,我现在呢,我来一个保存,你会发现它的ID乘几了,它的ID乘二了。
12:07
对吧,为什么是二,因为刚才咱们的添加的语句确实执行了,只不过是我们没有手动提交事物,所以说它的ID被占用了,但是咱们最终没有添加,没有来执行最终的结果,所以说大家一定要注意是为什么,那所以说我们要想实现效果怎么办?咱们直接在添加之后,咱们在这通过circle session来调用一下call me的方法就行,Call me的方法就是提交事物的意思,这个大家注意,所以说这句话叫做提交事物,然后下面咱们的这一句话,然后干什么呢?叫做关闭咱们的circle session对象,OK啊好,下面我们在这咱们再来一个执行,大家注意,我们来执行了启unit的方法之后,啊,这个地方就有了记录,所以说我们现在咱们直接来点击这个三角,或者说这个debug它都是可以执行的啊好,下面我们在这咱们再来一个刷新之后大家会发现,诶奥米就有了。
13:07
OK吧,好,大家注意,这个是我们当前咱们这个把my be的一个基础的添加功能,然后咱们测试之后的一个效果啊。
我来说两句