00:00
好,那我们刚才呢,咱们是通过my be来测试了咱们添加用户信息的功能,那下面呢,咱们来说一下这里面的一些细节问题啊。首先呢,咱们再来回顾一下这个过程,首先咱们创建的是一个核心配置文件,然后呢,来配置了连接数据库的环境,咱们又来引入了咱们的映射文件,对吧?然后咱们创建了map接口和映射文件,然后来保证了两个一致,首先保证咱们的映射文件的name space要和我们的接口的全类名一致,然后我们当前这里面的方法的SQL语序的ID要跟咱们map接口中的方法名来保持一致。好,然后这个时候咱们就能够达到一个什么样的效果呢?大家也都看到了,咱们可以在买杯体子中面向接口,然后来实现对一个SQ语句的执行,那所以说呢,这就是咱们买杯体中的一个优势,我们还需要去创建map的一个实现类吗?不需要,对吧,咱们只需要有map接口来调用我们map接口中的方法,就可以自动的去找到相对应的SQL语句来执行,但是大家要注意这两个一致好。
01:11
那这个过程咱们在进行测试的时候呢。我们获取circle session的过程,大家注意它是少不了的,因为circle session呢,它是my be提供的操作数据库的对象,它是我们当前my be里面的一个核心对象,所以说呢,我们每一次咱们在获取咱们的map接口的一个代理实现类对象的时候,咱们都需要通过它来获取,但是有一点就是我们当前这个过程既然是固定的,那咱们就可以把它进行封装,比如说一会咱们可以来创建一个。工具类,然后呢,提供一个方法,然后呢,这个来将我们的circle session对象,然后进行返回,OK吧,好啊,行,然后这一段代码大家可能会有一些问题,对吧?这个是我们my be里面的面向接口编程,我们有了map接口之后,然后我们就可以直接通过这个方法获取map接口的代理实现类对象来调用我们map接口中的方法,这是咱们最终的使用方式啊,因为呢,其实我们以后也都是也都是使用这种方式来实现功能的,所以说咱们就没有必要再去给大家去演示咱们的一些其他的过程了,当然呢,在这给大家写一下也可以,就比如说呀,然后大家看好,其实咱们最其实我们最开始学习买的时候啊,然后这个circle session,它提供的是有一些其他的方法的,就比如说呀,里面大家看一下你看。
02:36
Insert添加,然后select查询,Delete删除,Update,这呢大家往下看啊,这是修改,那所以说我们现在看到有这些方法之后,那咱们通过方法名我就知道他肯定是要来执行一个circle的,对不对?好,然后这括号里面有一个死string类型的参数,这是干啥的来定位circle的。来定位circle的,这个大家注意,那怎么来定位呢?大家想咱们在创建map映射文件的时候,和map接口的时候,咱们就说了他们两个有对应关系,我们当前咱们的映射文件,它的name space1定要跟map接口的权利名保持一致,那也就是说一个map接口对应的是一个映射文件,然后我们当前咱们不可能说两个映射文件它的内space是一样的,这个大家应该都知道吧。
03:27
那大家再来看这个第二个一致是什么?方法名要跟S口语句的ID一致,那这叫什么S口语句的I did,什么叫ID唯一标识?这东西能重复吗?也重复不了,所以说大家可以认为这个是我们当前映射文件的唯一标识,而这个东西是咱们当前S口语句的唯一标识,那我们既然咱们现在要通过这个字符串定位到我们当前。咱们的这个SQ语句怎么来定位,非常简单,大家注意啊,直接这样去写,我现在给大家写的啊,是没有map接口的这种情况,也就是我们最原始的一种情况,我们现在咱们用的map接口其实是最终的一种方式啊,在这儿可以把这个过程给大家演示一下,大家来看啊,怎么写呢,非常简单。
04:15
看看好了啊,其实这个方法括号里面写的是什么?大家注意是通过咱们circle语句的唯一标识,唯一标识对吧?好,然后来找到circle,然后并执行,来找到circle,然后并执行,然后那咱们当前的circle的唯一标识是什么呢?大家注意circle在哪映射文件中,那它的唯一标识是什么?看好了啊,是name space.circle的ID。能看懂吧,Name space的circle的ID,也就是说我们要把这个东西给拿过来,然后放在咱们当前咱们的这个括号里面,然后再往下点circle的ID,这是它的ID,所以说咱们在这再加上一个点,把它写进去,大家会发现它的返回值就是一个什么呀,就是一个。
05:12
Int类型的,然后下面我们只需要来执行咱们的这一段代码,大家就能够看到效果,我们当前就是通过我们的这个啊name space.sq语句的ID来匹配到这个SQ语句,然后来执行这个SQ语句的,OK,那我们先把咱们的数据库给打开,咱们在这呢,然后更多表操作,咱们把这个表给截断一下,大家要注意截断跟清空的区别,清空呢是把表中的数据都给删除掉,而截断是不单会把表,它它在底层是怎么执行的,是先将我们的表给删掉,然后再重新创建一个一模一样的表,所以说这里面的ID啊,会重一开始OK吧,然后下面我们在这咱们再来一个执行,大家来看啊,然后大家会发现它的结果呢,也是一没问题,然后我们再来找到我们的circle样,咱们在这来一个刷新,大家看添加成功了没有,添加成功了,那说明我们当前写的是没有问题的,我们要想去执行一个circle。
06:12
就是要靠我们的name space的circle语句的ID,然后来匹配这个circle并执行,那所以说我们在这咱们用的面向接口编程这个东西啊,我刚才是怎么给大家说的,我说他在这会创建一个代理实现类对象,那实现类就要去重写,就要实现咱们的user map接口,那他就要去重写接口中的抽象方法,它怎么去重写的,大家注意,其实就是我们在这儿所写的这个过程。OK吧,通过我们map接口的全类名来找到咱们的映射文件,然后通过我们当前咱们的map接口中的方法来找到当前咱们的SQL语句。执行。就是这样的一个过程,好,这个大家要注意啊,好,那我们这样也是可以实现功能的,但是咱们这样呢,以后用的不多,然后我们以后用的最多的方式就是我们在这儿所写的这种方式,直接来使用谁呀,咱们的map接口,通过get map方法创建它的代理实现类对象,直接调用我们当前map接口中的方法,然后就可以直接定位到一个SQ尾去去执行,OK啊。
07:23
啊。来,那下面呢,我们再来看一个问题,我们刚才咱们第一次在实现的时候啊,然后大家会发现我们没有提交事物,它是不是不会自动提交,那咱们每一次在。这个执行一个circleq语句之后,咱们都要来提交15,那也挺麻烦的,因为咱们知道买circleq里面啊,它默认就是自动提交十物的一个SQ语句,独占一个事物,好,那所以说我们现在咱们可不可以啊。不自己手动提交了,我也来开启一个自动提交事物,可不可以呢?可以大家注意啊,咱们就获取circle session的时候就可以设置,比如说刚才大家会发现在我们的open session方法里面,它是有有参的方法的,比如说刚才咱们会看到一个这里面有个不玩类型,大家看你看这个不玩类型叫什么叫auto commit,叫是否自动提交,我们只需要在这里面写个true,它就会自动提交这个大家注意啊,好,咱们把它然后给它注释掉,然后我们在这呢,咱们来创建的绘画对象circle session,然后它是不会自动提交什么事物,对吧?然后我们再来复制一下,然后它是会自动提交事物的,它怎么写啊,跟我们上面的这个是一样的,只不过就是咱们只需要在open session方法中来设置一个处就可以啊好,大家看我现在呢,我把提交事务的这个。
08:52
代码已经注释掉了,然后下面我们在这再来一次执行。好,然后大家看一下啊,结果是一啊。
09:02
哦,我把这个输出结果的这一句话,然后也给它注释掉了,对吧?那咱们就直接来看咱们的数据库中的数据呗,咱们现在来一个刷新,大家看有没有了,有了OK吧,好,那所以说当我们在open session的时候,咱们在里面设置一个处,咱们所设咱们所获取到的circle session对象,它就可以自动来提交事物啊好OK,咱们把这一句话给它拿出来啊,或者说直接把这个注释放到这儿就行啊好OK,那下面呢,那我们再往下看,然后咱们的最后一个优化,就是我们在这最好大家可以去添加一个日志功能,然后就像是我们在咱们的这个泡沫点叉ML里面一样,咱们先把我们的这个logo服务器,咱们所使用的日志框架叫做logo服务器,咱们把这个logo佛G啊,然后把它的依赖先给它加上,咱们来找到我们的。笔记对吧,然后咱们首先先把它的依赖复制过来,然后放在我们的这个POM点叉ML里面,然后来导入更新,导入完更新之后,然后下面大家可以直接把咱们的这个配置文件呀,直接复制过来就行,这东西大家是不需要自己去写的。
10:14
然后我们复制把配置文件放在哪,所有的配置文件都放在resource下面,点击右键,然后来new一个什么,来new一个叉ML,它的名字是固定的,必须得叫log forg,点叉ML,然后把这些内容复制过来就行啊好,这个大家注意,这个是没有问题的,咱们主要来看它有没有效果就行啊好,然后呢,我们在这呢,咱们再次去执行,然后大家会发现,哎,这个时候它就可以帮助我们输出一些日志信息。就比如说我们当前所执行的SQL语句,然后我们当前所传输的参数,我们当前最终然后所执行的结果,对吧?受影响的函数是1OK吧?好,这是咱们的日志功能啊。
11:04
好,OK,那这个就是我们my be实现功能的时候的一些优化,然后以及我们的这个一些细节问题,大家一定要注意my be中的面向接口编程调用接口中的方法,咱们就可以对应circle口语句来执行,但是它的前提是什么?一定要保证两个一致,Map接口的全类名和映射文件的SQL语句啊,和映射文件的这个命名空间呢,一定要一致,而我们当前要调用的方法的方法名一定要跟SQ句的ID保持一致,OK。这个大家注意,咱们呢,在。这个好几节课里面,然后咱们都说过这个问题,所以说这个问题大家一定要把它记住,然后呢,大家一定要养成一个习惯,我们创建完map接口之后,你再去创建映射文件,就直接把咱们当前的内space给设置为当前map接口的全类名就行,OK吧,然后至于咱们的SQL语句啊,它的ID,然后跟咱们的方法名一致,怎么写,大家就像我这样写就可以。
12:05
对吧,然后咱们直接把这个方法复制过来,复制过来之后把它放在一个注释中,然后咱们再去写这个circle,然后方法名比较长了,比较短了,大家就自己写,保持一致,如果方法名比较长了,那我们就复制一下,把它给放在这个ID的位置就可以,OK吧,好啊。
我来说两句