00:00
使用MP做乐观锁怎么做?刚才咱也说了步骤,那我按照步骤咱就详细来把这过程实现一下啊。这个我再画张图啊,就是乐观所得具体实现。那怎么实现,首先里边的第一步骤啊,咱们就是在我们的表里边添加一个字段,让他作为我那个乐观锁那个。版本号啊,这是第一个,然后接完之后,咱在那个就是实体类中。对应的实体类中添加一个版本号的这么一个属性啊,这是它里面的第一步,加上一个字段,还有这个属性,这个字段我提前加过的,就是各位到这个表里边,你点这个改变表或者al这个table,然后在里边加一个角version啊,这是我提前加过的,然后version我直接写一个it类型。啊,这是我们加的这么一个。
01:01
版本号的一个字段。啊,这个啊,我提前给他已经加上了。然后加上之后啊,咱们对应我们的实体类里边加个属性,这个我来加一下啊,这之前没有加,然后这个属性我们来一个private,来一个叫in tIgEr,这个叫version,让这个属性,所以咱那个。版本号的属性啊,这是我们做的第一步操作把这个啊,各位能给他快速做的就是加上一个字段,然后你的类里边加上这么一个属性。然后这一步做到之后,下面啊,我们再进入到里边的第二步操作,那第二步怎么做呢?我这里写一下啊,咱的做法就是。在我们那个就是。实体类里边。版本号的属性上边添加上一个注解,这注解就叫做version啊,那我们来加一下啊,这个注解它叫这个。
02:01
Version啊,你注意这个version的包是咱说那个苞米豆中的一个version,让它所咱的班本号啊,这个咱需要加上加一个version这么一个注解。这步是必须的啊,然后这个点完之后,下面咱还有第三步操作,就是你现在加了属性,加了字段,加了一个注解,然后第三步操作我们要做什么呢?因为乐观锁呢,是在MP中给咱们做的封装,所以咱们需要配置这么一个乐观锁的插件。啊,写一下啊,就是配置一个乐观锁的一个插件,这个咱需要做配置,然后这个插件怎么配置,然后可以看一下它那个官方文档中找一下啊乐观锁这里乐观锁插件首先它的做法就是第一种方式,如果说啊,你还用普通的那种配置文件方式,那咱在文的配置文件中加上这句话,就一个b class就可以,如果说咱用boot工程,那我们加上一个配置方式,就这个艾特这个B,这是一个乐观锁插件,就咱现在就用它来完成一个乐观锁插件的配置啊,我们就是这么来做。
03:12
那咱来写一下啊,而在配置的时候呢,怎么做呢?这个插件不需要个位记,咱用的时候直接复制可以了啊,就是它,那我们怎么配置呢?第一种方式,你可以把这个插件直接写到我们的启动类里边,在这里边加个插件,这么做是没有问题的,但是咱们更建议把这些配置都放到一个专门的一个配置类中,咱一般不见都写到我们的行类里边。啊,那我下面我建个配置类,那配置类怎么创建,我在里边呢,就来一个包,就刚才建的conf包,然后conf里边建个类啊,名字随便器,比如我叫这个MP config。然后这个类作为配置类,怎么它就是配置类呢?咱需要来个注解,这个注解叫这个configuration,然后你把刚才那个乐观锁的插件直接给它放到这里面来啊,这就是咱们写的这么一个配置类,里边配置一个叫乐观锁插件。
04:13
啊,用这个我们给他做到。然后这个做到之后呢,咱也可以把行类中的这个map看也给它移过来,行类中就不写别的配置,就是一个最简单的一个位方法,咱把这配置都放到这个类中。啊,这是一个配置类,在里边配置的一个乐观锁插件。啊,这一步骤我们就做到了啊,就是里边的这个过程啊。呃,讲到这里啊,这个过程。稍等啊,给它截的稍微大一点啊。就他啊乐观锁的插件啊,所以咱们啊完成了这么一个配置啊,而这么做之后,咱就把这个乐观锁的这个开发过程就做到了啊,主要这个过程我再说一遍,然后再测试啊,第一步就是咱们表中加个字段,我这字段叫version。
05:08
然后加完之后在你的实际类中加上属性,属性上边加一个注解叫version,都加完之后,最后咱写个配置类里边配置出一个乐观锁插件,包括咱把启用类里边的配置都放到这个中来啊,这样的话就可以了,然后配置类别忘记加一个叫configuration,里边这个艾特B是六安锁插件配置啊,这么做我们就最终做到了。啊,就这过程。但是咱做的过程中呢,为了更加完善,大家注意,因为咱们第一次加数据的时候,我这个version可以给它来一个初始值,那初始值怎么加呢?咱就用一下我们刚才刚学过那个知识。啊,咱用这个来讲。啊,我再写一遍啊,后面我就复制了啊,咱用一个叫自动填充方式,我来一个field,等于叫field field insert,我想实现在添加数据的时候,让version有个默认值就是一啊,这是咱写的这个,然后写完之后在我们这个定义的这个类中加上这个规则,就写一个this.set field。
06:16
然后这个叫version。然后它的值是这个,问值一啊,最后加一个这个might object原数与对象啊,咱就加上这么一个。啊,自动填充啊,但是这个乐观锁啊,其实没有关系,主要为了我们效果更明显,如果你不加它的话,第一次这里边这个version值应该为空啊,咱看不到效果,所以咱们加一个自动填充,未来效果更明显。啊,但是本身乐观所只需要这个注解就可以了。这个啊,我们就做到了啊,然后这些呢,都做到之后,最后咱们把效果我们来做一个最终的一个演示啊,咱来演示一下啊,我说一下怎么演示啊。首先呢,第一个啊,因为咱说到,比如第一个呢,一会儿我先向表中先加一条数据,加完数据之后,Version默认值应该是一,然后咱再改这套数据,当我改完之后,按照乐观锁的特点,它的版本号是不是要加一啊,就版本号就会变成二啊,但是这个效果有没有,如果有的话,那证明咱这效果就可以实现出来。
07:23
啊,那我们就来试一下啊,首先第一个我先加一条数据,这个数据啊,然后数据我随便写个啊,比如说名字换个名字啊,呃,咱随便换一个这个什么东方不败啊,随便写一个,然后把这个数据咱们加到表中,然后一会儿用它来演示。啊,咱重新加掉数据做测试。我们等他啊,先执行出来。啊,这个啊应该已经执行了,到表中咱看一下东方不败version初始值是不是一咱用自动填充做到的,然后做完之后下面,然后把这条数据做一下修改。
08:07
啊,我们来改一下这个数据,那我强调啊,这个改跟刚才有点区别,咱刚才改的话直接设置ID和A是不是就修改,但是现在如果说你要测试这个就是乐观锁的时候,那你就不能这么改了,但需要怎么改呢?这就是我们修改过程。不知道各位是否记得啊,咱们修改操作的话,首先是不是先查询呢?查询之后是在修改,所以咱们现在要测试乐观锁,你不能直接设置值,你要怎么做先查再改这效果才能出来啊,那我们来测试一下啊。我用这个复制啊,咱快速改一下啊,这结构都一样,然后这个乐观所给它起个名字,我就叫这个名字啊。就是咱们测试这个乐盖锁。在里边啊,说一下怎么做,首先第一个咱们就先根据ID先查询出我们的数据,然后查完之后我们再进行修改,就是先查再改,那怎么查,这些方法咱刚才没说过,现下来说在user map中咱找个方法。
09:19
大家看这个方法叫select by ID,就是根据ID做查询,在里边传入你那个ID值,就是咱们的这个值,我把这个值咱给它就传进来。就是它啊,然后他一查返回的是咱们的user侧对象,就是先查询,然后查完之后再来修改,就首先我向这个user侧中先设置一个值,比如咱们把它的A做个修改,就改成这个200。然后改完之后调user map中等,那刚才说那个方法update白地把user传进去,这样的话修改可以完成啊,就这过程,因为咱们查的话,里边会包含你这里边所有值,包含ID,包括其他值,咱们就改它的A,最后再修改啊,这就是测试托管所先查再改,如果说这个乐观所能生效,当咱一改的话,那这版本号应该会变成二。
10:17
啊,那咱们就最终试一下啊,看他能不能做到。我来测试啊。把它执行。就是把先查询,然后把它的age改成200。打开结果啊。啊,这个啊没有报错,然后到里边咱看这个值大家仔细看。这个200改了版本号是不是就变成了二啊,这样的话,咱们把这个就最终做到了啊,这就关于乐观所的这么一个测试啊,就是它这个开发过程。我把这个测试代码给大家啊,也给他说过来,就是你注意它的测试方式,就是先查询,然后再修改,如果你直接设值啊,那它里边的效果做不到啊,你需要把所有数据先都查出来,然后根据查出的数据再进行我们这个相应的这么一个修改。
11:10
啊,所以这个我们就完成了关于这个乐观锁的这么一个操作啊,就是第十个啊乐观锁。所以说啊,这个过程最后再重复一遍啊,做法就是呢,表中加个版本号字段,在类中加一个属性,对应那个版本号,在属性上边啊加上一个注解叫version,然后加完之后咱们配置一个叫乐观锁插件,这插件是固定的,不需要各位记用的时候直接复制可以,也是一个固定的插件。然后这个插件咱是给他放到了一个配置类中啊,包括咱后面的配置都是在配置类中来写啊,咱就不都写到启动类中了,启动类里边只写我们最基本的那方法,把配置都放到这个中来,然后这个做完之后,咱最后再测试,测试就是先查询再修改,然后咱会发现版本号就给它加一了,证明咱的乐观锁。
12:07
就最终生效了啊,这个啊是咱们演示的这么一个效果,关于乐观所啊,咱们就演示完了,所以这个过程中邀各位啊,第一个你知道什么是乐观锁,包括乐观锁通过版本号来解决,然后第三个你要学会在MP中乐观锁该怎么去实现出来,就是刚才我演示的这么一个过程。啊,这个啊,咱就做到了啊。
我来说两句