开发者学堂课程【数据库中间件ShardingSphere详解:ShardingSphere - Sharding - JDBC (公共表)】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/666/detail/11251
ShardingSphere - Sharding - JDBC (公共表)
内容介绍:
一、前言
二、介绍公共表及其操作
三、小结
一、前言
前面我们讲到了 Sharding-JDBC 实现对分库分表之后的继续操作,下面介绍一个新功能,用 Sharding-JDBC来实现对公共表格的操作。
二、介绍公共表及其操作
1.公共表
一个项目中有一些表的数据是固定的,变化频率较小,但在操作中会经常使用这个表的数据,从而完成工作内容。举例,
比如现在这里边有一个用户表,在用户表中这样一个字段,叫ustatus ,表示用户的状态,显示用户已经启用或禁用这个表格。在表格中不存文字版的启用和禁用,而是用 a 或 b 来表示启用和或禁用,这样的表格叫做公共表。公用表改变较少,操作中会经常对它进行关联的常操纵。简单来说就是,在项目中存储固定数据的表格,表中数据很少发生变化,在查询时经常进行关联操作的表格称为公共表。
2.操作
在进行分库处理之后,每个数据库中都会创建出相同结构的的公共
表,使用Sharding-JDBC之后,向其中一个表中进行添加数据等操
作时,其他表格都进行相对应的操作。
接下来进行一个测试,在配置文件中有三个数据源, m1 、 m2 、 m0 ,对应的是三个数据库,db_1 、 db_2 、 user_d b。首先在三个数据库中创建一个结构相同的公共表,在表中创建用户状态。在 user_db 中创建一个语句(如下):
CREATE TABLE t_udict (
dictid BIGINT(20) PRTMARY KER,
ustatus VARCHAR(100) NOT NULL,
uvalue VARCHAR(100) NOT NULL
)
这是一个公共表,有一个术语描述叫做字典表,里面存着状态所用的值。然后在db_1 和 db_2 中创建,刷新后可以发现,三个数据库里的表都存在,且内容相同。
创建之后,在项目配置文件 application.properties 进行公共表配置。把 t_udict 表作为公共表,给它改个名字,然后配置公共表(如下)。
#配置公共表
spring.shardingsphere.sharding.broadcast-tables=t_udict
spring.shardingsphere.sharding.tables.t_udict.key-generator.column=dictid
spring.shardingsphere.sharding.tables.t_udict.key-generator. type=SNOWFLAKE
完成上述操作后,开始编写测试代码。写代码的目的是方便看效果,下面会编写两个代码,即添加和删除代码。先创建一个新的实体类和mapper ,然后编写添加和删除方法进行测试。先写一个实体类,名字叫为 Udict,开始编码,代码如下:
@Data
@TableName(value =
“t_udict")
public class Udict {
private Long dictid;
private String ustatus;
private String uvalue;
}
接下来是把 mapper快速控制出来,我们使用之前的 mapper ,复制粘贴后改个名字,叫 UdictMapper ,然后完成创建,代码如下:
@Repository
public interface UdictMapper extends BaseMapper {
}
完成 mapper操作后,开始写测试方法,一共两个操作,添加和删除。添加内容如下:
@Test
public void addDict() {
Udict udict = new Udict();
udict.setUstatus("a");
udict.setUvalue(
“已启用");
udictMapper.insert(udict);
}
然后写一个删除方法,代码如下:
@Test
public void deleteDict() {
QueryWrapper wrapper = new QueryWrapper<>();
//设置userid值
wrapper.eq( column:"dictid"
,val:465174601941385217L);
udictMapper.delete(wrapper);
}
代码完成后,开始测试,先测试添加。因为是公共表,在配置文件中也做了配置,包括改了原本的规则。如果这个添加代码是正确的,那么三个数据库里面的公共表都会添加这个数据。测试,看一下效果是什么样的。
执行代码后查看结果,发现 m1 、 m2 、 m0 都加进了新数据,所以这个添加操作是正确的。然后稍稍修改,测试删除操作。执行代码后查看结果,发现m1 、 m2 、 m0 三个表中的数据都不见了,因此这个删除操作是正确的。以上就是有关公共表的操作。
三、小结
通过上述操作的效果,知道了什么叫公共表,以及它的操作有什么样的特点。总结,在多个数据库中都创建相同结构的表,需要经常做关联操作,在每个数据库里都创建。创建之后,在配置文件中配置一个表是公共表。配置之后,创建实体类和mapper ,然后进行添加或删除的操作。当你在一个数据库里的公共表进行添加或修改时,其他数据库里的公共表会进行相对应的操作。以上就是所有有关公共表及其操作的内容。