--公共表处理)
一、公共表的定义存储固定数据的表表数据很少发生变化查询时候经常进行关联如字典表。二、Sharding-JDBC公共表的处理1、在多个数据库都创建相同结构公共表在前面创建的3个数据库edu_db_1、edu_db_2和user_db中创建t_dict表SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS 0; -- ---------------------------- -- Table structure for t_dict -- ---------------------------- DROP TABLE IF EXISTS t_dict; CREATE TABLE t_dict ( dict_id int NOT NULL, dict_key char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, dict_value varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, PRIMARY KEY (dict_id) USING BTREE ) ENGINE InnoDB CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci ROW_FORMAT Dynamic; SET FOREIGN_KEY_CHECKS 1;在一个数据库中完成表的创建后在Navicat上选中表右键复制然后在目标库中表的右键粘贴可以快速创建出一样的表。2、配置application在原来配置的基础上添加下面的配置# 配置公共表 spring.shardingsphere.sharding.broadcast-tablest_dict spring.shardingsphere.sharding.tables.t_dict.key-generator.columndict_id spring.shardingsphere.sharding.tables.t_dict.key-generator.typeSNOWFLAKEspring.shardingsphere.sharding.tables后面的表需要替换为自己项目的公共表3、创建实体类和mapper,略4、创建单元测试//4、测试公共表 Test public void addDictDB() { Dict dict new Dict(); dict.setDictKey(0); dict.setDictValue(已启用); dictMapper.insert(dict); } Test public void deleteDict() { dictMapper.deleteById(2033801340813910018L); }当执行添加时会同时往这3个库的t_dict表插入数据: Actual SQL:m1::: INSERT INTO t_dict (dict_id, dict_key, dict_value) VALUES (?, ?, ?) ::: [2033801340813910018, 0, 已启用]: Actual SQL:m2::: INSERT INTO t_dict (dict_id, dict_key, dict_value) VALUES (?, ?, ?) ::: [2033801340813910018, 0, 已启用]: Actual SQL:m0::: INSERT INTO t_dict (dict_id, dict_key, dict_value) VALUES (?, ?, ?) ::: [2033801340813910018, 0, 已启用]当执行除时会同时将这3个库的t_dict表指定数据删除