一、公共表概念

  1. 存储固定数据的表,表数据很少发生变化,查询时经常要进行关联。
  2. 在每个数据库中都创建出相同结构公共表。
  3. 操作公共表时,同时操作添加了公共表的数据库中的公共表,添加记录时,同时添加,删除时,同时删除。

二、在多个数据库中创建相同结构的公共表

1、这里我们准备两个库

1)、edu_db_1

2)、edu_db_2

2、创建公共表

这里我们创建两个功能表

create table t_udict(`dictid` bigint(20) primary key,`ustatus` varchar(100) not null,`uvalue` varchar(100) not null
);create table p_diction(`dictId` bigint(20) primary key,`ustatus` varchar(100) not null,`uvalue` varchar(100) not null
);


三、在yml中对公共表进行配置

spring:shardingsphere:# 数据源配置datasource:# 数据源名称,多数据源以逗号分隔,名称可以随意起名names: db1,db2db1: #配置第一个数据源driver-class-name: com.mysql.cj.jdbc.Drivertype: com.alibaba.druid.pool.DruidDataSourcepassword: Tz@202011username: rooturl: jdbc:mysql://192.168.56.20:3306/edu_db_1?allowPublicKeyRetrieval=true&useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghaidb2: #配置第一个数据源driver-class-name: com.mysql.cj.jdbc.Drivertype: com.alibaba.druid.pool.DruidDataSourcepassword: Tz@202011username: rooturl: jdbc:mysql://192.168.56.20:3306/edu_db_2?allowPublicKeyRetrieval=true&useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai# 规则配置rules:sharding:# 分布式序列算法配置key-generators:dict-snowflake:type: snowflake #分布式序列算法类型,雪花算法:SNOWFLAKE; UUID:UUID)column: dictid #分布式主键列pdict-snowflake:type: snowflake #分布式序列算法类型,雪花算法:SNOWFLAKE; UUID:UUID)column: dictId #分布式主键列tables:# 逻辑表名称t_udict:key-generate-strategy:column: dictid #分布式序列列名称key-generator-name: dict-snowflake #分布式序列算法名称p_diction:key-generate-strategy:column: dictId #分布式序列列名称key-generator-name: pdict-snowflake #分布式序列算法名称broadcast-tables:- t_udict- p_diction# 属性配置props:# 展示修改以后的sql语句sql-show: true

四、编写测试代码

1、创建Controller

package com.sharding.demo.web;import com.sharding.demo.model.Pdict;
import com.sharding.demo.model.Udict;
import com.sharding.demo.service.DictionService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
@RequestMapping(value = "dict")
public class DictionController {@Autowiredprivate DictionService dictionService;@RequestMapping(value = "addDict")public void addDict(String type){if (type.equals("1")){Udict udict = new Udict();udict.setUstatus("1");udict.setUvalue("10");dictionService.addUdict(udict);}else{Pdict pdict = new Pdict();pdict.setUstatus("1");pdict.setUvalue("10");dictionService.addPdict(pdict);}}@RequestMapping(value = "delDictionByParam")public void delCourseByParam(String dictId,String type){if (type.equals("1")){dictionService.delUdictById(dictId);}else{dictionService.delPdictById(dictId);}}
}

2、创建Service

package com.sharding.demo.service;import com.sharding.demo.model.Pdict;
import com.sharding.demo.model.Udict;public interface DictionService {void addUdict(Udict udict);void addPdict(Pdict pdict);void delUdictById(String dictId);void delPdictById(String dictId);
}
package com.sharding.demo.service.impl;import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.sharding.demo.mapper.PDictionMapper;
import com.sharding.demo.mapper.UDictionMapper;
import com.sharding.demo.model.Pdict;
import com.sharding.demo.model.Udict;
import com.sharding.demo.service.DictionService;
import org.springframework.stereotype.Service;import javax.annotation.Resource;@Service
public class DictionServiceImpl implements DictionService {@Resourceprivate UDictionMapper uDictionMapper;@Resourceprivate PDictionMapper pDictionMapper;@Overridepublic void addUdict(Udict udict) {uDictionMapper.insert(udict);}@Overridepublic void addPdict(Pdict pdict) {pDictionMapper.insert(pdict);}@Overridepublic void delUdictById(String dictId) {QueryWrapper<Udict> queryWrapper = new QueryWrapper<>();queryWrapper.eq("dictid",dictId);uDictionMapper.delete(queryWrapper);}@Overridepublic void delPdictById(String dictId) {QueryWrapper<Pdict> queryWrapper = new QueryWrapper<>();queryWrapper.eq("dictId",dictId);pDictionMapper.delete(queryWrapper);}
}

3、创建Mapper

package com.sharding.demo.mapper;import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.sharding.demo.model.Udict;public interface UDictionMapper extends BaseMapper<Udict> {
}
package com.sharding.demo.mapper;import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.sharding.demo.model.Pdict;public interface PDictionMapper extends BaseMapper<Pdict> {
}

五、进行测试(对其中p_diction测试一下)

1、向其中的p_diction插入数据

edu_db_1库中:

edu_db_2库中:

2、删除数据

edu_db_1库中:

edu_db_2库中:

Sharding-JDBC 之公共表相关推荐

  1. SSM项目引入sharding JDBC进行分表

    SSM项目引入sharding JDBC进行分表 注意点: 本次集成sharing-jdbc 4.1.1,由于各个版本差别比较大,配置方式差别也特别大,请根据官方文档进行配置! 官方配置路径:http ...

  2. Spring boot + Sharding JDBC 分库分表 及 分布式事务处理

    Sharding JDBC 基础概念 Apache ShardingSphere 是一套开源的分布式数据库解决方案组成的生态圈,它由 JDBC.Proxy 和 Sidecar(规划中)这 3 款既能够 ...

  3. 理解Sharding jdbc原理,看这一篇就够了

    相比于Spring基于AbstractRoutingDataSource实现的分库分表功能,Sharding jdbc在单库单表扩展到多库多表时,兼容性方面表现的更好一点.例如,spring实现的分库 ...

  4. 5、ShardingSphere 之 公共表

    文章目录 1 公共表 2 在多个数据库中创建公共表 2.1 edudb1库中t_dict 2.2 edudb2库中t_dict 2.3 userdb库中t_dict 3 创建po 4 创建mapper ...

  5. ShardingSphere(五) 公共表配置,实现读写改操作

    概述:如果我们有一些非业务表如基础配置表或者数据字典等表,不需要做分库分表那么改如何设计,Sharding-jdbc 中公共表可实现该种配置.公共表即每个数据库中都存在的一张表,改表在数据库中也无分表 ...

  6. 水平分表、分库和垂直分表、分库和公共表的代码实现和讲解

    文章目录 一.教学讲解视频 二.环境准备 三.水平分表 1.概念 2.代码 四.水平分库 1.概念 2.代码 五.垂直分表 1.概念 2.代码 六.垂直分库 1.概念 2.代码 七.公共表 1.概念 ...

  7. Sharding JDBC(四) 分片策略一:标准分片策略StandardShardingStrategy

    目录 一.标准分片策略StandardShardingStrategy 二.StandardShardingStrategy配置实现 分库分表最核心的两点SQL 路由  . SQL 改写 applic ...

  8. sharding jdbc 的雪花算法中的属性worker.id和max.vibration.offset

    雪花算法生成的id总共64位8个字节,结构如下: 符号位 时间位 工作机器标识位 序列位 1位(固定位0) 41位 10位 12位 worker.id sharding jdbc  4.1.1使用雪花 ...

  9. Sharding JDBC分片和读写分离详解

    目录 Sharding Sphere简介 开始使用Sharding JDBC 数据分片 简单示例 Spring Boot示例 代码分析 属性分析 绑定表和广播表 真实表 绑定表 广播表 Shardin ...

最新文章

  1. 超越时代的天才——图灵
  2. Dagger2从入门到熟练
  3. linux怎么远程windows桌面,Windows系统怎么远程登陆桌面Linux?
  4. Google Chrome —— 离线安装/安装包下载解决方案
  5. ubuntu取消主目录加密_如何在Ubuntu上恢复加密的主目录
  6. 1108. IP 地址无效化
  7. javascript 西瓜一期 13 十六进制的数数方式与进位
  8. linux命令哲学,Linux哲学思想、history实现执行命令的时间、Linux命令格式
  9. Android 获取唯一机器码的代码
  10. python pow函数用法_Python代码中pow()函数具有哪些功能呢?
  11. 让外国黑客感到胆颤心惊的传奇人物郭盛华
  12. java list移除所有元素_Java - List集合中如何删除多个元素? remove( )方法 ?
  13. Flask蓝本与子域名
  14. UEFI shell - 脚本文件
  15. 汇编语言0x2c,ARM汇编语言(4) 指令、伪操作、伪指令学习
  16. javascript 实现在线多币种汇率实时换算
  17. python 模块paramiko
  18. 挣扎中的谷歌“蜻蜓项目”,Google 搜索到底能不能回归大陆?
  19. '/',‘\\’与‘\’的区别
  20. 苹果cms模板_苹果cms手机模板好看的有哪些?

热门文章

  1. Autonomous Health Framework (AHF) - Including TFA and ORAchk/EXAchk
  2. Linux学习-91-Discuz论坛安装
  3. 关于博达CMS制作网站的心得与体会
  4. 程序员电脑桌面是什么样的? 网友: IE浏览器必删, 不能留! 1
  5. Android 震动器操作类
  6. Spring Boot实现验证码功能
  7. 【龙芯1c库】移植硬浮点FPU
  8. 数据库 第九章 数据库系统概念 课后习题答案
  9. pdfbox创建pdf_PDFBox之文档创建
  10. hdu3555(数位dp)