00:00
各位啊,我们继续来看啊,刚才呢,我们是完成了筛定ABC中的分片策略的配置,把这些我们应该都配出来了,包括这个配置呢,刚才每个部分我们是通过它的官网把这个咱直接拿回来快速改成我们的效果。然后各位看一下它的官网中,然后往下拉是它下面在这个地方把这配置给我们也做了详细的说明,包括每个都是什么意思,大家看到里边都有解释,刚才我应该都解释过了,所以各位按照他这官网能把这个快速给他配出来啊,就改成你对应实际的这个效果。然后这些呢,都做了之后,咱们下面往下来做,下面做什么呢?就是咱们的第五部分,咱就开始编写我们的测试代码,来完成这个最终的这么一个测试,所以咱们最后来做一个测试,那咱们把这个测试代码快速写下。
01:00
咱们看怎么来做啊,首先这些都完成了,然后测试代码在里边呢,我这位置也写了实体内,包括也加了这个map,咱用到my plus把这些都做到了,包括这个map看别忘记加,然后这些呢都会加上之后最后我就来到这个损部这个测试的方法中,在里边咱把这个map注进来,然后调研的方法来实现它的操作,那再来实现一下啊。比如现在我们先测试第一个,我就做一个最基本一个添加操作,我改个名字叫ACO。然后添加呢,咱就调这个cos map中的方法。在里边有个方法叫这个insert insert中呢。你传入一个cos对象就可以了,那我们给它传下,等于就是new上一个cos啊在对象,然后像cos里边设置它的值ID,因为这个主键咱刚才设置策略,这个值不需要设置,因为刚才我们在里边做了这个配置。
02:10
各位应该记得啊,用这个雪花snow black这个算法能设一个随意一个数字,这个不需要设置,然后别的纸咱设置一下,比如里边有这个c name。就这个课程名称,我把它设置一下,然后我们写一个就是这个Java,然后再来一个cos.set有这个叫。UID啊ID,我随便来一个值,就来一个这个100,于是浪类型L这个值,然后除了它之外,Cos里边还有一个纸是这个叫。Thes,它里边一个状态,比如状态我们叫这个。啊,Normal就是它。表示已发布啊,这是一个状态,然后写完之后,最后把这cos。设置到这个inerl方法中,这样的话就能完成一个最基本这么一个添加课程的这么一个操作,这个测试代码我们就快速写出来了,然后这个代码,比如咱一会儿一执行,它会向我们的数据库的表里边加数据,但是你注意在加的过程中,刚才咱们做了一个策略。
03:20
这个策略如果说你的这个主机ID是个偶数,那他把这数据就加到我们的COS1的表里面去,如果你的ID是奇数,那加入这个COS2的表里面去,所以咱们马上做个测试,然后通过这个效果看一下这个最终效果能不能做到啊,当然过程中可能会有错误,如果有错误赶快尽快排出它的问题到底在哪里,那下面我们来做个测试。啊,它是测试代码,就是这个代码。我把这个代码给各位快速。输入过来啊,到我们的课件中,就是写一个简单的单元测试,然后把那map注入,最后调方法实验,我们的就用这个操作。
04:04
那咱们最终试一下啊,我现在在里边的单元测试右键把它执行,咱们看最终的效果能不能做到。咱们等它停起来。第一次会卖点,因为他要进行编译,进行加载,后面会变快,第一次嘛,他要把Java代码变成卡文件。咱们多等一会儿,等它先启动,然后大家看啊,这里启动,我们会发现最后。他是报错了,他报了异常,注意啊,最终他报了异常,大家看一下这异常,他到底是什么异常啊,我们看一下啊这异常,然后异常怎么看呢。高各教各位这么一种方式啊,一般来讲咱看异常经常看它的最前面,还有它的最后面,比如说咱们先看最后面,最后面有一个叫cos by,就由什么引起,咱们看啊里边他告诉我们什么异常,他说什么。
05:04
你看里边它提示了很多,但如果说咱们直接看这东西,好像咱们并不能准确的看到它到底什么错误,那这里边咱们可以再看里边的前面部分,看他到底什么错误。大家看啊,前沿过告诉我们说这个data source。定义了在里边,就是它已经在里边定义了,然后里边报了一个错误,然后下面告诉你说,现在你这里边要解决问题怎么样。咱就看一个词啊,叫这个override,是不是有这个重写或者覆盖意思,他说现在这个B呢,已经被覆盖了,如果你想解决的话,需要你做个设置,这是什么,然后这个值等于处,他告诉你该怎么解决,里边就你在描述这英文,你看不懂,但你找你认识单词。Or right是不是覆盖,就是它里边已经把这个B给你覆盖掉了,你需要做个设置,那这错误到底是什么?给各位我来说一下啊,我先把这个给大家截个图。
06:07
然后我拿到我的课件中来,小这个位置啊,这是测试代码。然后写到这里,就是我们写到上面的这个测试代码。咱们一执行发现它就。报错了,然后报的是刚才咱们说的这个错误,然后错误是什么呢?给各位来做个描述啊,咱说这个问题到底是什么。大家注意啊,我现在在数据库中是不是有两个表啊,一个叫COS1,一个是不是叫COS2啊,而我在操作中你会发现啊,我这里边是不是有一个是体类叫cos,比如是我现在这个是体类,它是不是要对应两张表啊,既要对应COS1,又要对应COS2,但是这样的话它没法对应,因一是以内没法同时对应两张表,虽然你两张表的结构是一模一样的,但是目前它没法用一个水以内对应两张表,所以现在咱需要把它解决一下,怎么解决,就是做这个设置。
07:07
这事什么意思?因为我两张表结构是一样的,我把一设置让两张表操作将于一个是以内对用一张表与两张表是同样的结构,所以咱们需要把这句话在里边做个设置啊,这就是它的问题,我再重复一遍啊,目前咱们是一个是一类要对应两张表,而两张表咱是根据不同规则往里面添加,但是目前一个是一类没法同时对应两张表,虽然两表结构是一样的,那怎么做?咱需要加这设置,让两张表跟瑞一类统一做对应啊,就是它里边如果相同,给它做一个覆盖,比如你操作第一个表,操作第二表结构都一样,咱用事一类都能进行操作,这是它出现一个问题啊,就是一个11类不能成数对应两成表,咱需要做个设置,那我现在把这个咱给它就设进去,就这句话,这咱就复制到里边来就可以了。
08:00
我把它做一个复制,然后给它放到啊上下无所谓,我就放到这个位置了。拿过来,它表示把咱们那个。实体类啊,就是这么写啊,一个实体类。对应两张表。这个过程我们做一个这么一个覆盖。这个啊,是它里边的这么一个设置,而咱们这么设置之后,这里边就能体现出我们对应的效果,所以你需要加上这个配置。我把这句话给各位。直接追过来就是咱们的解决方案。我写第二个啊。解决方案就是在你的配置文件中。添加上这么一行配置。就可以了,它的配置就是咱们刚才看到的这个东西。把这加上,这问题就可以解决,所以这个啊,是我们刚才遇到这么一个问题,然后咱现在把它加上,最终我们再来做一个测试啊,咱看最终效果,包括这行配置我也放到我上面的笔中来啊,就是在我们的位置给他也加上,然后这句话我特别标重。
09:17
同颜色啊,大家写的时候这个要特别注意。这样的话我们就解决了啊,然后解决之后,最后我们来做一个最终的测试,看一下最终的效果。咱们最后试一下啊,刚才是这个问题报错了。现在重新执行这句话我也加上了啊,还是来到测试类中,把这个代码我们现在给他执行,咱们看目前的效果。咱等他盯出来啊。然后大家看啊,你看啊,目前这里边绿色的对勾没报错吧,然后咱看最后一部分,大家看是不是有它这个语句的输出,因为刚才我在配送件中加了里边的这个配置,所以有语句,然后这个语句我们来看一下啊,咱看它里边特点,这有点小,咱往右拉一点啊,大家看啊,应该是在这位值,就是咱们现在加的值中,CAD的值是这个值,这个值中你发现。
10:16
它末位是不是七呀,就是它是一个奇数,所以要操作应该是咱们的COS2的这个表是这个表,所以你看现在它告诉我们像M1数据库中的COS2的表里边会insert咱们刚才加的这个数据啊,它会加到咱们的COS2表,证明咱的水平分表效果是不是就做到了啊,这里边提示我们是正确的。然后咱到表中看一下,我们先看COS1,我刷新没有数据,再看COS2。数据是有了,因为这个值是奇数,它就加到咱们的COS2里面去了,这样的话,咱们把这个我们就最终完成了,就是这么一个基本效果,所以各位把这个给他知道啊,包括比如咱们再给他再测试一下啊,咱们为了看效果更明显,那比如现在我这么测试啊,我在里边呢,为了明显我就写一个负循环。
11:13
咱循环多次,因为你循环多次,每次的值肯定是不一定的啊,它可能是奇数,可能是偶数,那我循环多次,比如来一个小于等于这个十。爱加加,然后在里边把这个放到咱的循环里边来啊,为了明显这个位置,我都加上这么一个爱啊,为了它区分一下,就这里边也加一个I。呃,这个ID就是100了啊,然后这个cos给它传进去,最终他每次用那个snowfle的雪花算法,剩一个随意的一个值,现在它会循环这么多次来让它循环。十次最终做个添加啊,包括把这个数据先删掉,咱重新做个测试,因为这么做的话,他的ID可能奇数,可能偶数会向两个表中添加数据。
12:03
咱们最终测试啊。我把这个执行。咱们看最终的效果什么样的。等它顶出来啊。嗯,因为我循环了十次。好,大家看啊,这里边最终这种成功了,然后它这位置就是有十个因色与输出分别向你的COS1COS2中,根据你的值,比如说咱们找个具体的值,咱以这为例,这是不是奇数,他会操作我们这个COS2啊,那比如说再找一个。你看这个啊,这个ID值六是不是偶数,它会操作这个是不是叫COS1啊,这样的话数据应该都加进去了,然后咱们到表中看一下,先看COS1大家看。里边是不是有六条数据啊,它都是偶数,就是末尾值都是六,每个ID都是随机不一值,然后看COS2中都是七,这些都是奇数,另外它这值因为是用snowle的雪花算法,每次生成都是随机的为一个值,最终把这个数据你看就是加到了COS1和COS22个表中,这样的话咱们把这个就最终完成了啊,就是关于里面这个特点。
13:18
所以各位啊,就知道啊,然后这个做到之后呢,咱下面可以再做个测试,刚才做的是不是添加呀,那下面咱做什么,咱做个查询,是不是也能测试一下。那我来写一下啊,咱来一个查询。课程的方法,我写一个。单元测试,然后来一个public,比如我叫find。Cos。查询,然后在查询里边,因为现在我们肯定也是调这个cos map中这个方法做查询,因为它ID都不一样啊,咱可以用这个select y里边加个条件,这条件呢,咱写一个条件构造器,它叫query rapper。
14:02
啊,Rapper里边加上一个叫,然后这是rapper,等于new上一个query rapper。这个啊,先创建一个条件构造器,把这个我们先创建出来。啊,写多了啊把这个先创建,这是一个叫rapper。这里边叫。这个啊,我们先创建。然后创建之后呢,咱下面就根据我们的这个ID做查询,那我们加一个EQEQ表示等于它的ID就是cid,后面加上那个ID值,比如像现在找一个ID啊,随便找一个,比如就找这个吧。JD是什么什么?七是一个奇数,因为它是浪类型,来一个L,然后加上之后,最后咱们把rapper传到这里边来,它会返回里边这个对象,咱把这对象最后。
15:03
做一个输出,这样的话完成了一个最简单的根据ID查询方法,根据cid做个查询啊,这个各位都知道啊,这是MP中写法,如果各位对MP不熟悉,也是看到古理学院中有对MP的相应讲解,咱们这里边重点讲的是筛丁啊,所以咱们用它做了一个测试,而这样的话就完成了这个代码,如果咱一执行,如果效果正确的话,它会怎么做?这是不是基数,它会到咱们的COS2表中把这数据是不是会查出来,那咱就来试一下啊,看这效果能不能做到,根据主键ID做查询。我现在把它执行下,咱看结构啊。咱等他顶出来。啊,各位看啊,最终成功了,然后咱们先看数据是不是查出来数据没有错,然后咱们看他查的是哪个表,看他底层语句。
16:05
大家看到啊,Select字段from谁是不是COS2,因为咱们的ID值是不是一个奇数,所以它会查这个CO42这个表,根据我们刚才配置到分片策略中这个规则,这规则咱是小这位置如果是奇数查一这表,如果是奇数啊查二的表,如果是偶数查一的表,所以这样的话,咱们现在把这个就是用筛定ABBC实现。分库分表之后,数据操作这个代码我们就最终完成了,主要就是里边的这部分,我把这个代码给各位,也是复制到我们的课件中来,就咱们刚才写的。这个部分。把这个啊给大家接过来。包括这个效果,刚才我们都讲到了,然后我最后把里边几个细节给大家再特别强调一下。
17:00
各位看啊,就刚才咱们这个用SHEDBC做这个。水平分扰过程中,第一部分咱就搭建了一个环境,就一个损部的项目,然后里边引入它的相关依赖,引入之后我们建个十以类,建个map map中用这个买plus,包括建行类,Map开,还有这个测试的这个类做最终测试,这个做完之后,咱下一部分就是建了一个数据库,包括里边两个表,因为咱做水平分表,我们有COS1COS2,创建之后呢,咱的下一步有一个核心,在配置文件中来配置你的分片的这个策略,主要是这个结构,刚才我把每部分应该都说到了,但是通过它的官网把每个部分改成我们对应的效果,各位把这个能给他快速改出来。然后你就注意这个地方,因为它对应的是MYSQL8驱动和地址需要改一下。这些都做完之后,最后咱测试,测试中遇到一个问题,就这个问题再加一个配置可以解决他的问题,就是一个G类对应两个。
18:05
这张表,然后咱需要把两表给它覆盖,因为两表的结构是一样的啊,包括后面咱做其他的分子方式,这个应该不需要,目前他做这个水平分扰中需要这个配置。然后这个做到之后,咱们最后做这个测试,在测试中咱就是做了添加,做了查询,然后添加中根据我们的规则。ID是奇数加COS2,是偶数加COS1查询,刚才咱们也测试到了,因为我们查这是奇数,所以他查那个COS2标准数据,如果你查偶数,他肯定会查那个COS1里面数据啊,那比如说啊,咱也试一个啊,找一个偶数的,比如这个。这是偶数嘛,就是这个六,那我现在把这ID。改一下,然后最后把这个做一个最终的测试啊,咱就看最终这个效果。把这个测试一下啊。
19:04
然后各位看,最终肯定他是成功的,数据查出来了,咱就看他那个语句查的是谁。是谁?是不是COS1啊,因为我这值是偶数,所以这样的话咱就完成了用筛定JDBC实现这个水平分表这个完整的代码过程,把这个做到了,做到之后一会儿咱会实现分库,包括其他的这些方式,目前咱完整的水平分表。这个我们就把代码写完了。
我来说两句