00:00
在前面的内容中呢,我们讲到了筛定JDBC实现对分库分表之后数据操作,那下面呢,我们再来做一个功能,用筛定JBC来实现对公共表的操作。那我在里边给大家写一下。使用she定JDBC来操作这个。公共表,那首先我先解释一下什么叫。共表,就公共表到底是什么,给各位做个说明,大家注意,因为咱们现在呢,在我们一个项目中做一些表,这些表的数据是比较固定的,它的变化的频率很小,但是我们在操作中要经常关联这个表的数据。才能得到我们最终内容,那我这里边给大家举个例子,大家看,比如我们现在这里边有一个用户表,在用户表中有个字段叫UCS,它表示用户的状态,比如说咱们用户状态外呼这么几种,比如说这个用户。
01:06
已经启用或者说已经禁用,而咱存的时候,一般在用户表中咱不存这个禁用和启用,那存什么?存他一个标志,比如现在我们约定A代表已经启用,B代表引进用,咱就为它中央借一张表,这张表来存它的状态嘛,定的那个具体数据,比如A状态码数据就是一起用,B状态码数据就是已禁用,这个表就叫公共表,而这种表一般很少做改变,但是单操作中经常需要对这个表进行关联的产操作,这种表就叫公共表。给各位在里边写一下。就是我们在项目中一些。比较就是一些存储固定数据的这个表,而这个表中的数据又很少发生变化。
02:01
但是我们在查询的时候,要经常进行关联的这么一个操作,这种表就叫公共表,比如刚才我举这个用户状态对应它的具体值,这个叫公务表,而公务表在操作中一般我们怎么做呢?给大家写一下,就是一般来讲啊,咱们比如说你做了分库处理之后,咱们一般就是在你的每个数据库中都创建出这个相同结构的。公共表,在每个里边都有这个表。然后这个创建之后,我们用筛定这BC之后,比如你现在向表中加数据,那这些数据库中的公共表数据都会添加,当你改数据都会进行修改,当你删数据,这所有数据库中的这个表的数据都可以删除,这叫公共表,那在下面按照这种效果给大家来做个测试,那咱看怎么做。
03:01
各位看到啊,我现在呢,在我配置这个配置文件中有三个数据源,M1 m2 M0,对应的是咱们的三个数据库,就是DB1 DB2,还有这个就说DB,所以首先第一部分咱怎么做,在三个数据库中都来创建这么一个公共表。在里边,比如咱就创建你的用户状态,就用它的值,这是我们的第二部分,那我写一下,在我们的多个数据库中都创建相同结构的这么一个公共表。把这个咱们创建出来,那我现在给各位做创建,咱就分别在这三个库里边都建这个表,那首先我在user DB中先创建,我直接写个语句,比如叫。Table,这是一个公共表,或者说是有一个术语描述叫做字典表,因为里边存到你的状态用的值。比如这个表,我起个名字叫T,这个u Di啊,就是dictionary这个字典。
04:07
然后在里边我们写上几个字段,这是第一个big ID,我们叫这个big in。这么一个类型,再来一个20,然后里边来一个。这个key是一个主键,然后里边第二个是那个状态,我叫U。Thes写一个100,写一个not not,第二个,第三个是它对应的那个值,我来一个u value也是来一个,我差写个100,然后来一个。Not,那这样的话,这个表的电表语句我们就写出来了,首先咱先在这个user DB中把这表先串出来。这是第一个,然后我在这个e Du DB里边,还有EDDB2里边,把这表咱们都做创建,然后现在我把它刷新,大家看一下,现在你发现三个数据库里边这个表。
05:12
是不是都存在啊,里边全有,所以这是我们做的一个准备工作,然后把这个给各位截到这个图上,然后咱们进一步分析,我们有三个数据库,第一个叫edu。DB里边有咱这个表,然后里边有第二个数据库,这个叫EBDB2里边有我们这个数据库,就这个表,然后里边还有第三个叫user DB里边也有咱们刚才创建的这么一个表。把这个我也接过来。所以现在这是我们的第二部分做的这个准备工作,因为这叫公共表嘛,咱在每个库里边都有相同结构表,然后在里边给大家画一下,这是第一个库中的表,这是第二扩充表,这是第三个扩充表,所以按照这种结构,咱们把它快速创列出来。
06:06
这是我们的第二部分,各位给他能够快速做到。然后这个做到之后,咱下面做第三部分就开始做它的操作了,那第三部分怎么做呢?咱就需要在我们这个项目那个配置文件中,比如那个OB。Poverty。里边进行这个公共表的这么一个配置。那咱们看怎么来做,咱们在里边配置一下,因为咱们目前公共表就这个T叫做UD这个表,所以咱们的公共表,那我现在把它在我们的配置文件中,咱们来做个配置,再来写一下啊,这里边我就在这个位置,咱为了明显我还是再重新复制一份。
07:00
然后给他给个名字,我们叫这个。零三。然后里边在这位置改一下啊,然后怎么改呢?在里边就加上一个公共表的这配置,我把公共表就写到这个位置。就是配置它那个。公共表那怎么做呢?它的做法就是在里边呢,加上这么一行配置就可以了。那咱们啊,把这样配置我给他就快速咱给他加上一下啊,然后完成这个操作,那这配置怎么做,前面的部分跟这都一样,就three shading sp.sheding在点上里边有一个属性,这个属性叫broadcast tables,等于咱们那个公共表的那个名称,我们的公共表这个名字tud。所以把它。拿过来这是一个公募表,咱在里边做了一配置,然后配置之后,因为公募表中呢,也有它的ID,咱也可以试一下它那个ID那个生成的一个策略,把这个啊,我也做个设置,就这里边改一下,咱叫tu。
08:13
D口,然后它里边的ID叫D口ID,包括它是一个snow flag这么一个策略,这样的话咱们完成了这么一个配置,这就是配置公共表,在配入件中就写上这么一段啊,当然还有其他东西,这是核心的,因为咱们现在主要做的是公共表。这个就完成了,然后完成之后第四部分咱就开始编写它的测试代码。但是测试代码怎么来做,给大家写一下啊,这代码很简单,主要是咱们看它的效果,比如咱一会儿写两个代码,一个是添加,一个是修改,当我添加的时候会有什么效果,它因为是公共表了,它会向你这里边配置的三个数据源中的表里边都加数据,当你删除的话,他把三个数据源中的表中数据都给它删掉,所以咱们一会儿通过两个效果,一个添加,一个删除,看一下公共表最终的这么一个实验效果,就是它会向多个数据源中的表做添加,包括修改,包括删除,咱以添加删除为例,把这效果给大家最终演示出来。所以咱们第三步编写测试代码。
09:26
但是这个因为是操作新表嘛,所以咱们也是创建一个新的实体类。他,他倒。Map最终编写那个测试的方法啊,咱就要编写这个添加和删除方法进行测试,这个啊是我们要做的事情,那咱们下面快速写一下。首先在里边我们先写一个实体类。我起个名字叫U。D,然后在U里边写上你表中对应的属性,但是咱把这表给它对应起来,它叫table name啊,这些的问题咱也说过了,里边的名字叫T条线U。
10:11
D考啊,把这个名字复制一下啊,省得我们写错。T_UD然后写完之后,里边有它的三个属性,我把属性复制,咱给它写上第一个ID,我们来一个private long类型,这个ID啊,就是它里边的ID值。然后里边第二个是它那个状态private。缀我们叫u thes,然后第三个是里面那个值private词缀我们叫u value,这样的话把这一类创建了会,别忘记指定它用的表,如果你不指定咱之前出现过这个问题,把这个啊,咱给它加上。这个给各位直接复制,然后复制之后下面咱们把它的map快速创建出来,那我在里边写一下,在map中我用之前的咱直接复制一下啊,给它改个名字,我就叫这个U。
11:12
D口,Map这里边写上的那个类的名字叫做UD口,这样的话map我们也创建出来了,所以这样的话,把这个第一部分准备工作做到了给各位。结构图里边两部分,一个实体类,一个map。这个啊完成,然后完成之后呢,下面咱就开始写这个测试方法,在里边又来做两个操作,一个添加,一个删除,大家看效果什么样的,那咱来到这里边,在这个位置呢,因为咱是一个新的map,所以把它肯定要。注进来。Private叫。Map u map,然后下面咱就来助理操作,我写个注释就是。
12:02
测试。公共表的这么一个操作。在里边两个方法,一个添加一个删除,然后把这个结构复制一下,然后在里边我们写一下啊。首先方法改一下,比如我们叫这个U。D口。添加在里边,按照这种结构写一下啊,首先我们还是先new一个这个UD。等于U上一个U口向里边设置它的值。比如有一个。The状态,比如来一个A。然后它里边对应的这个值,这值我们叫做这是就这个叫这个已经启用啊,已启用再写个值,然后最后调这个UD口map中的iner的方法,把这个看进去,这样的话我们就能做到一个添加,就这么一个基本功能。
13:00
然后写完之后,咱们再写一个删除方法,比如咱们统一测试,这是删除。删除,改个名字,我叫。Delete这个,然后在里边,因为它要根据ID删除,我把这ID啊这个结构再拿回来快速改一下,也都一样的啊,然后这里边叫U。D考。这里边的ID应该叫ID后面加一个值,然后咱们调这个删除的方法,它叫delete。呃,就是底delete这个方法里边传这么一个rapper,咱们可以做到这么一个删除啊,然后这个map应该是UD和那个map。诶,我给他改错位置啊,改到这里,我把这个先复制一下啊,给它还原回去。也改到上面啊。给他先还回去啊,改错了。就之前那个操作啊,然后这位置我们写那个删除,我把方法写到这位置啊这个地方,最终我们调那个叫UD map中用比例的方法把这删掉这ID啊,一会写成我们最终添加之后那ID,所以这样的话,两个测试方法快速写出来了,写完之后咱们先来测这个添加,注意啊,因为咱是公共表嘛,我在配置文件中。
14:24
也做了配置,包括改了它这个规则,如果说咱们添加正确的话,他会怎么做,项机里边配置的三个数据源中的数据库的表里边都会加数据,就是项目里边的。第一个库里边表中,第二库的表,第三库的表中都会加上监测数据,这叫公目表,那咱们来测试一下啊,我把这方法执行,咱们看一下最终的效果,看它是什么样的。咱们来执行一下哈。然后各位看现在这个过程中,它没有出错是正确的,咱们先看一下它底层生成的SQ语句,大家看这位置,你看啊,它现在是不是像M1 m2 M0这三个库中的表里边是不是都加这个相同数据包里边全加它就可以说把这过程中广播到了你的多个数据源中,表里边加了这个数据,然后咱到表中看一下第一个表。
15:29
数据是有,第二个库里的表是不是有数据,第三个库里表是不是有数据,这样的话咱们就完成了一个公共表的一个操作,它会向你配置数据源中的多个数据源的表里边都会加上这个数据啊,就是M0 M1 m2都加进去了,这叫添加。然后这个做到之后,咱再测一个修改啊,咱测一个删除,咱以删除为例,修改都一样的啊,那我里边把这个ID拿过来,然后咱们根据ID做删除,如果说效果正确的话,它会把三个数据库中的表中数据都给它删掉,因为它是公共表了。
16:07
它里面会广播到多个数据源,完成这个操作。那咱们看一下它这个输出的日志啊,我们看到啊,里边你看看到这个效果了。M1M2M0是不是都是执行了delete这个操作,就这个效果,包括啊里边根据ID做这个删除,然后咱们到表里面看一下,先看第一个表,就这个DVE这个表里面数据刷新是没了。第二个也没有了,然后第三个user DB里边。这些数据是不是也不存在了,所以这样的话,咱就把这个效果最终完成了,这个就是公共表的这么一个操作。把这个给各位。做了一个演示啊,当然你要做查询,肯定大家要写一个思Q语句啊,就能做到啊,过程就简单了,主要是通过这个效果,大家知道什么叫公共表,包括它的操作什么样的特点,这咱们就解释完了,最后啊快速重复一遍啊,它的做法就是呢,咱在多个数据库中都创建相同结构这个表,因为那里边我们要经常做关联操作,所以在每个库里边都创建,然后创建之后在里边我们在这个配置文件中配置哪一个表是公表,通过这句话做个配置,然后配置之后咱们建map,建实体类,最终做操作,当你添加的时候,它会向你配置的多个数据源中那个表里边都加数据,你删除的时候或者修改的时候,也都会修改你多个数据源中那个表的数据,包括咱刚才演示了添加删除效果,都是把咱们三个库里面的数据是不是都做了这个添加和删除操作,所以这是关于公共表的部分。
17:52
把这个各位做了演示,而这过程中咱通过筛DBC做了配置,它就能给我们广播到多个这个注意源中完成对用这个操作这个啊,咱就也是完成了公共表的这个校应内容。
我来说两句