00:00
各位同学大家好,刚才呢,咱们完成了案例,就是完成了买书的过程,包括最终测试也成功了,那下面呢,给大家演示一个错误的效果,从而引出咱们事物的这个监管内容,那咱们做个演示,首先我做一些基本的准备工作,咱们把数据啊稍微改一下。大家看啊,在图表里边,我们的第一本书库存量咱们还是改成200,这个不变。然后来到我们的用户表里边,大家看啊,用户的余额咱给他改的小点,比如说改成50块钱,大家注意啊,目前测试有问题了,你发现我余额是50,但是我书是一百一百的,100块钱的书用50块钱是不是肯定是买不了的,但是这个时候呢,大家注意啊,我在建数据库的时候,把这个字段建成了无符号,就是它不能是负值,如果说你用50块钱再减100,那肯定最终是负值,是负值的话,那这个肯定存不进去,它会出错,所以咱用它模拟处理过程,我再说一遍啊,50块钱买100元的书肯定买不了,而我这个用户表里的这个余额的这个字段变成了无符号类型,就是它不能是负值,而我现在50减100肯定会出现负值,这个时候它里边肯定加不进去。
01:30
据会出错,大家用它我们就来做个演示,咱们看一下什么效果啊,大家看我这个库存量200,余额50,那下面把刚才的程序我们再执行一遍,试一下这个效果目前是怎么样的。然后咱们执行啊,大家看是不是就出错了,然后看他出的什么错啊,那告诉我们就是这个错误,这个值目前有负值,但是你是一个无符号的,这个值肯定加不进去,但是咱看目前数据的变化怎么样,大家看图书,我们明显看到库存量是不是减一了。
02:09
但是你看这个用户余额是没有变,也就是说我们现在啊,没有花一分钱,这书竟然买成功了,库存量居然减一了,这肯定不对,正常什么效果,你余额没有变,我库存量应该也不会少,应该进行事物的回滚,但是目前没有加事物,所以里边出了问题,所以咱们解决方案就是在里面加事物,要么都成功,有任何一个失败,所有都会失败,所以现在我们就引出了事物中这个基本概念。这是我们演出一个错误效果,所以咱们下面在我们这个案例中添加上事物。那事物怎么加呢?按照这个过程啊,咱目前是基于注解方式的生明事物,那咱看啊,第一部分在我们此人的配置文件中加上两个配置,大家看啊,第一个配置只有我们这个事务管理器,就是对哪个数据源进行事务操作,然后这里边就是开启事物的注解驱动,为了用到里边的注解,主要加上这么两部分,然后把这个给一个未来复制过来,咱们直接加到我们润的配置文件中来。
03:20
咱们放到我们的这个位置,我就放到下边了啊这里。然后大家看啊,第一个事务管理器,我们指定对哪个数据源进行事务操作,然后第二个加上里边这个叫作开启事物的注解驱动,因为咱们基于注解方式进行事务管理,要用到一个注解进行操作,当然各位注意啊,我教完之后里边是报错了,咱们少了一个明空间,就是TX的空间,那我现在把这个咱给它加上,然后再来做这个内容。我把这个啊复制一下。放到这里。然后放到这里之后,大家看这个咱就加进去了tno drive开启事物的注解驱动。
04:06
现在啊,咱就把这个加上了。然后我这里也特别写到了啊,就是如果说啊,你这个事务管理器的ID就叫trans,那这个其实是可以省略不写的,因为它默认的就这个。啊,这个位给头注意一下就可以啊,现在把这加上,然后加上之后咱并没有做完,咱们还要做什么呢?需要用个注解进,最终实现这注解叫做这个注解,然后注解加到哪里呢?大家注意啊,咱目前有controller service do,咱们说过service层是逻辑所,我们在这个方法可以加这个注解,就这个trans个注解,那给它加下啊,我就加到这个方法上这个注解。
05:00
Trans这个注解,这样的话表示就给它添加上的事物,而这个注解呢,有这么一个特点,我这里写到,如果说你把这注解加到方法上,它只会影响当前方法,但这个注解呢,我也可以把它呢加到我这个类上边,那它对类里边的所有方法都会产生影响,看你的实际场景,我现在就加到类上边,那里边的方法都会有事物的影响,这就是咱们在里边加上的事物。当然这个注解里边呢,还有一些相关的属性啊,它有很多的属性,对咱一会儿来说,目前先把事物的基本功能先加上,所以目前这个就完成了,我再重复一遍啊,然后咱们进行测试。首先第一部分咱们在配置文件中加上事务管理器,开启事物的注解驱动。这个过程中需要引入一个新的命名空间叫TS,然后下一部分在service的类上边或者方法上加上注解transal,这个注解最终完成事物添加这个咱就完成了,完成之后最终我们来试一下这个效果啊,咱们把数据库中这个数据给它先整理一下。
06:17
把这个给他做个整理,比如说我还是改成这个200。这是库存量200,余额是50,这个时候我把这个方法我们再进行执行,咱们看它的效果最终是怎么样的。大麦执行一下啊。然后大家看啊,这里边啊,就是刚才我们看到那个错误,它里边出错了,然后咱看表里面的变化,先看余额肯定没有变,再看库存量,大家看我在刷新,你看库存量是不是也没有变,是不是还是200,证明它就是进行了回滚,当你有一个失败,那所有都不会成功,只有都成功才叫成功。
07:02
所以现在啊,我们就完成了事物的添加,通过注解,通过配置文件,最终进行了实现。
我来说两句