ShardingSphere - Sharding - JDBC (公共表) | 学习笔记

简介: 快速学习ShardingSphere - Sharding - JDBC (公共表)。

开发者学堂课程【数据库中间件ShardingSphere详解ShardingSphere - Sharding - JDBC (公共表)】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/666/detail/11251


ShardingSphere - Sharding - JDBC (公共表)

 

内容介绍:

一、前言

二、介绍公共表及其操作

三、小结

 

一、前言

前面我们讲到了 Sharding-JDBC 实现对分库分表之后的继续操作,下面介绍一个新功能,用 Sharding-JDBC来实现对公共表格的操作。


二、介绍公共表及其操作

1.公共表

一个项目中有一些表的数据是固定的,变化频率较小,但在操作中会经常使用这个表的数据,从而完成工作内容。举例,

1.1.png

比如现在这里边有一个用户表,在用户表中这样一个字段,叫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 中创建,刷新后可以发现,三个数据库里的表都存在,且内容相同。

1.2.png

 

创建之后,在项目配置文件 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 {

}

 

1.3.png

 

完成 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);

}

代码完成后,开始测试,先测试添加。因为是公共表,在配置文件中也做了配置,包括改了原本的规则。如果这个添加代码是正确的,那么三个数据库里面的公共表都会添加这个数据。测试,看一下效果是什么样的。

1.4.png

 

执行代码后查看结果,发现 m1 m2 m0 都加进了新数据,所以这个添加操作是正确的。然后稍稍修改,测试删除操作。执行代码后查看结果,发现m1 m2 m0 三个表中的数据都不见了,因此这个删除操作是正确的。以上就是有关公共表的操作。

1.5.png

 

三、小结

通过上述操作的效果,知道了什么叫公共表,以及它的操作有什么样的特点。总结,在多个数据库中都创建相同结构的表,需要经常做关联操作,在每个数据库里都创建。创建之后,在配置文件中配置一个表是公共表。配置之后,创建实体类和mapper ,然后进行添加或删除的操作。当你在一个数据库里的公共表进行添加或修改时,其他数据库里的公共表会进行相对应的操作。以上就是所有有关公共表及其操作的内容。

相关文章
|
12天前
|
SQL druid Java
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)(下)
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)
35 3
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)(下)
|
12天前
|
SQL Java 关系型数据库
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)(上)
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)
47 3
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)(上)
|
12天前
|
SQL 关系型数据库 MySQL
Java数据库部分(MySQL+JDBC)(一、MySQL超详细学习笔记)(下)
Java数据库部分(MySQL+JDBC)(一、MySQL超详细学习笔记)
22 6
|
12天前
|
存储 关系型数据库 MySQL
Java数据库部分(MySQL+JDBC)(一、MySQL超详细学习笔记)(上)
Java数据库部分(MySQL+JDBC)(一、MySQL超详细学习笔记)
21 4
|
12天前
|
SQL 关系型数据库 MySQL
Java数据库部分(MySQL+JDBC)(一、MySQL超详细学习笔记)(中)
Java数据库部分(MySQL+JDBC)(一、MySQL超详细学习笔记)
18 3
|
3月前
|
Java 关系型数据库 MySQL
②⑩② 【读写分离】Sharding - JDBC 实现 MySQL读写分离[SpringBoot框架]
②⑩② 【读写分离】Sharding - JDBC 实现 MySQL读写分离[SpringBoot框架]
60 0
|
XML Java 数据库连接
java202304java学习笔记第六十五天-ssm-声明式控制-基于xml的声明式配置-原始jdbc操作1
java202304java学习笔记第六十五天-ssm-声明式控制-基于xml的声明式配置-原始jdbc操作1
55 0
|
SQL druid Java
[Java]JDBC学习笔记(尚硅谷康师傅JDBC)(四)
[Java]JDBC学习笔记(尚硅谷康师傅JDBC)(四)
|
SQL 存储 Java
[Java]JDBC学习笔记(尚硅谷康师傅JDBC) (二)
[Java]JDBC学习笔记(尚硅谷康师傅JDBC)(二)