00:00
好,那我们刚才咱们把咱们的映射文件呢,咱们已经创建完了啊,那下面呢,我们就可以来测试功能了,来好,然后我们现在我们的这一个对吧,这个test下面,然后咱们先来创建一个测试类叫做com.at硅谷点my be,然后点test。然后就叫做买贝提斯。然后test OK啊行,大家来看,那首先咱们先来创建一个测试方法,Public void就叫做test my be teeth OK啊好,那行,那我们现在该如何去测试呢?首先大家注意。咱们的MY呢,为我们提供了一个操作数据库的绘画对象。叫做circle session,那所以说首先呢,我们就需要先来获取我们的circle session对象,然后大家来看获取的过程啊,首先呢,咱们的第一步,然后需要去加载,然后咱们的核心配置文件,好,然后怎么去加载核心配置文件,咱们需要用到一个类叫做resource。
01:10
来大家看一下在这儿呢啊,然后org的阿尔帕奇的iab的IO这个包中的叫做resource,然后其中有一个这个静态方法,然后叫做get resource as streamam,然后是来读取我们当前咱们的配置文件,来获取它所对应的字节输入流啊这个大家注意,当然呢,我们也可以以其他的方式来获取,比如说大家来看有get resource as file,然后把它以一个文件对象的方式来获取,然后还有呢,把它以我们的properties的方式来获取,然后以我们的字符输入流的方式来获取都可以,那我们在这儿呢,然后咱们直接通过咱们的字节输入流来获取就可以啊好,那在这大家来看,那我们当前咱们需要去加载核心配置文件,那所以说我们是不是就需要把核心配置文件的名字呢,然后给拿过来,所以说我们刚才创建核心配置文件的时候,咱们说了。
02:10
都没有固定的名字呀,没有,你看我们在这咱们写的时候,咱们是可以自己,咱们是可以指定配置文件来进行加载的,那所以说大家不管叫什么都可以对吧,你叫ABC点叉M,那我们在这咱们直接写ABC点叉ML就行,OK吧,好啊,行,那既然咱们是以一个字节输入流的方式来获取的话,那所以说咱们的返回值也一定是一个字节输入流,那因为它是跟咱们的流相关的,那所以说我们就一定要来处理这个异常,然后呢,大家看好,咱们直接不用拆catch啊,咱们直接把它给声明出去就可以啊。好,然后再往下第二步,大家来看获取什么来获取咱们的circle session factory build对象,Build好,大家注意这个叫什么?这个叫做circle session factory builder是我们提供circle session的一个工厂对象的一个构建对象,好大家来看一下啊,首先circle session factory builder circle session factor builder等于new啊,通过它的构造器,然后来进行创建,然后创建完成之后,那既然它是用来构建我们的circle session factor对象的,那我们下面咱们是不是就应该来获取然后咱们的circle session的一个工厂对象了。
03:34
来,大家来看啊,怎么写。Circle session factory build.build的方法大家看一下里面是不是可以来传入输入流,可以来传入一个字符输入流,字节输入流都可以对吧?那所以说我们刚才咱们在读取咱们的核心配置文件的时候,咱们在这是不是有as stream,也有as reader,所以说呢,这两种方式都行,好,然后我们现在用的是字节流,那所以说我们只需要通过build的方法,然后把我们的字节流呢给放进去,这个时候咱们就可以获得一个circle session factory,那大家都知道呢,以factory结尾的类呢,因为咱们的Java中这个类啊是建名实义的,所以说既然它是以factory来作为后缀,那所以说它必定就是一个工厂类,那所以说它用到的就是工厂模式,将我们创建一个对象的过程呢,进行封装,直接来提供我们当前咱们的这一个对象就OK了啊好,那下面呢,我们就可以来获。
04:36
取咱们的myab操作数据库的一个绘画对象,叫做circle session,来大家看一下circle session factory点什么叫做open session?好,咱们就可以通过咱们的open session方法来获取我们当前的circle session对象了。那什么叫做circlerc session呢?Circle session session是绘画的意思,这个叫做circlerc session,大家来看一下啊,在咱们的笔记里面有介绍代表Java程序和数据库之间的会话,就比如说咱们之前学过httb session,这个是咱们的Java程序和咱们浏览器之间的一个会话,所以说我们现在呢,咱们就可以通过circle session来操作我们当前咱们买be体中的功能,这个大家注意啊啊。
05:26
OK,那我们现在咱们写完之后呢,然后大家说该怎么办了,Circle session是不是可以帮助我们去操作,是可以来实现我们买倍体中的功能,对吧?然后去访问一个circleq语句来执行SQL语句来获得结果,但是呢,那我们也说了,我们的my be呢,可以面向接口编程,然后咱们刚才一直说的一个过程,就是我们调用map接口中的方法,然后它就会自动的去匹配一个SQL语句来进行执行,那所以说我们现在咱们的目标就是要干什么,就是要来获取我们的map接口的对象,那大家都知道一个接口我们要想创建对象的话,那咱们必须得有实现类啊。
06:10
但是咱们现在有实现类吗?我们在创建map接口的时候就说过,它就是我们原来的DAO,而我们原来的DAO有接口,有实现类,但是咱们现在的map只有接口而没有实现类,那所以说我们该如何获取map接口的这个实现类对象呢?大家来看啊,好。下面呢,咱们来获取咱们的map接口对象,Map接口对象OK啊,咱们来获取circlerc,其中有一个方法叫做get map,大家来看这个方法是相当的妙,对吧?妙到哪了呢?大家看好了,你看它在这里面传进去的参数呢,是一个类型的class对象,然后这个类型的泛型呢是T,而这个方法的返回值呢,是我们当前的T对象,那这是什么意思?就是当我们传进去一个类型的class对象之后,这个方法就可以帮助我们来获取这个类型的实例化对象,大家说是不是对吧?好,然后所以说呢,你看比如说我们在这咱们传进去的是一个user user.class class,然后他返回的是不是应该就是一个user对象啊,是不是?那有的同学老师这有啥的,那我也可以自己创建对不对,但是大。
07:32
想啊,你看,那如果我现在在这儿传进去的是一个user map接口的class对象,那是不是就可以帮助我们来返回一个user map接口的对象,对不对?那大家想一下,这个map接口的对象,咱们是不是必须得有实现类啊?那换句话来说,在我们的get map方法的底层,它是不是就可以帮助我们来创建一个user map接口的实现类,并且返回当前这个实现类的一个对象,大家说是不是?
08:06
OK吧,好,大家注意,这个方法呢,它的底层用的是一个代理模式,它可以帮助我们来返回一个接口的一个实例,它可以帮助我们返回一个接口,然后它所对应的实现类的对象,这个大家注意啊,好,那所以说咱们的map接口对象有了,那我下边咱们是不是就可以来测试功能了,对不对?哎,好,然后map点调用咱们的insert user,大家说它应该是一个什么样的过程?每当我们去调用map接口中的方法,然后它是不是就可以根据咱们的map接口找到我们的映射文件,然后根据我们当前要调用的方法去找到我们当前咱们的什么SQL语句,对不对,好。它的返回值呢,然后是int类型,比如说咱们就叫做result。
09:00
OK吧,好,然后下面咱们可以把它给输出一下啊,比如说这叫result,然后冒号来加上加上。Result OK啊行,然后呢,我们现在咱们来测试一下功能,大家来看啊,来咱们点击右键,然后来执行来看啊好看一下有没有问题。好,大家看一下没问题,Result冒号一,那说明什么?那说明我们当前咱们受影响的行数是一啊对不对,因为咱们的增删改它的返回值是固定的,对吧?我们从GDBC的时候,咱们就知道增删改的返回值是受影响的行数,所以说咱们当前咱们所设置的这一个添加功能的返回值,这个int类型大家注意就是受影响的行数,那所以说现在受影响的行数是一,那说明我们当前咱们的SQ去执行了吗?执行了,而且已经执行成功了。那好,那我们现在把咱们刚才创建的表打开,诶里面没有刷新,再刷新还是没有,那这是为啥呢?大家注意啊,你看我们刚才在创建咱们的核心配置文件的时候,当我们来设置我们连接数据库的环境的时候,那我们是不是跟大家说过对吧?然后这个地方叫做事物管理器tab等于GDBC表示的是什么?来使用咱们最原始的GDBC的方式来管理事物,所以说我们当前所有的事物的提交或回滚都需要手动处理,所以说为什么在这它没有效果呢?其实很简单,就是因为我们没有。
10:40
提交事物,这个大家注意,所以说我们在这咱们需要来提交事物,怎么来提交,大家想想,那我们当前咱们能提交事物之前我们用的是connection对象,而我们现在呢,然后咱们的myab只给我们提供了一个circle session,那所以说我们当前就是通过circle session来进行提交的。
11:05
OK,这个大家注意啊,好,下面我们在这咱们再来一个执行,大家来看啊。好,大家看一下result是一没问题,然后下面我们在这再来一个刷新。再来一个刷新。好,看看啊circle session哦,写错地方了对吧?然后咱们应该是在执行circle语句之后啊,然后来提交事务对吧?咱们是把它给写到这儿了,所以说呢,然后它是不是应该是没有效果的,大家都知道,我们执行完circleql语句之后,然后咱们再去提交或回滚才有效果,如果你没有执行任何的搜口语句的话,那我们去提交或回滚是没有效果的,对不对?好,大家来看啊,来我们现在咱们再来一个执行,大家来看啊,那结果肯定还是一,但是呢,我们现在咱们的数据库里面是不是应该就有数据了,对不对,大家看这个ID是三吧,大家应该原来都都见过对不对?如果我们现在咱们来执行一个添加操作,如果你不提交失误的话,它的ID是会被占用的,大家说是不是,所以说我们刚才咱们执行了两次都没有提交事物,所以说它的ID已经被占用了,所以咱们在这的ID就是三。
12:23
能看懂吧,好啊,所以说呢,这个就是我们买be,咱们来这个执行一个circle的过程,大家一定要注意啊,我们在这儿来创建circle session对象,然后circlerc session是咱们的my be为我们所提供的操作数据库的绘画对象,然后我们下一步咱们需要干什么,咱们需要来获取我们当前的map接口的对象,调用map接口中的方法,然后就会来执行我们当前的这个S口语句。OK吧,好啊行,然后大家注意这个是我们的一个添加功能啊。
我来说两句