Sharding-JDBC 之公共表
一、公共表概念
- 存储固定数据的表,表数据很少发生变化,查询时经常要进行关联。
- 在每个数据库中都创建出相同结构公共表。
- 操作公共表时,同时操作添加了公共表的数据库中的公共表,添加记录时,同时添加,删除时,同时删除。
二、在多个数据库中创建相同结构的公共表
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 之公共表相关推荐
- SSM项目引入sharding JDBC进行分表
SSM项目引入sharding JDBC进行分表 注意点: 本次集成sharing-jdbc 4.1.1,由于各个版本差别比较大,配置方式差别也特别大,请根据官方文档进行配置! 官方配置路径:http ...
- Spring boot + Sharding JDBC 分库分表 及 分布式事务处理
Sharding JDBC 基础概念 Apache ShardingSphere 是一套开源的分布式数据库解决方案组成的生态圈,它由 JDBC.Proxy 和 Sidecar(规划中)这 3 款既能够 ...
- 理解Sharding jdbc原理,看这一篇就够了
相比于Spring基于AbstractRoutingDataSource实现的分库分表功能,Sharding jdbc在单库单表扩展到多库多表时,兼容性方面表现的更好一点.例如,spring实现的分库 ...
- 5、ShardingSphere 之 公共表
文章目录 1 公共表 2 在多个数据库中创建公共表 2.1 edudb1库中t_dict 2.2 edudb2库中t_dict 2.3 userdb库中t_dict 3 创建po 4 创建mapper ...
- ShardingSphere(五) 公共表配置,实现读写改操作
概述:如果我们有一些非业务表如基础配置表或者数据字典等表,不需要做分库分表那么改如何设计,Sharding-jdbc 中公共表可实现该种配置.公共表即每个数据库中都存在的一张表,改表在数据库中也无分表 ...
- 水平分表、分库和垂直分表、分库和公共表的代码实现和讲解
文章目录 一.教学讲解视频 二.环境准备 三.水平分表 1.概念 2.代码 四.水平分库 1.概念 2.代码 五.垂直分表 1.概念 2.代码 六.垂直分库 1.概念 2.代码 七.公共表 1.概念 ...
- Sharding JDBC(四) 分片策略一:标准分片策略StandardShardingStrategy
目录 一.标准分片策略StandardShardingStrategy 二.StandardShardingStrategy配置实现 分库分表最核心的两点SQL 路由 . SQL 改写 applic ...
- sharding jdbc 的雪花算法中的属性worker.id和max.vibration.offset
雪花算法生成的id总共64位8个字节,结构如下: 符号位 时间位 工作机器标识位 序列位 1位(固定位0) 41位 10位 12位 worker.id sharding jdbc 4.1.1使用雪花 ...
- Sharding JDBC分片和读写分离详解
目录 Sharding Sphere简介 开始使用Sharding JDBC 数据分片 简单示例 Spring Boot示例 代码分析 属性分析 绑定表和广播表 真实表 绑定表 广播表 Shardin ...
最新文章
- 超越时代的天才——图灵
- Dagger2从入门到熟练
- linux怎么远程windows桌面,Windows系统怎么远程登陆桌面Linux?
- Google Chrome —— 离线安装/安装包下载解决方案
- ubuntu取消主目录加密_如何在Ubuntu上恢复加密的主目录
- 1108. IP 地址无效化
- javascript 西瓜一期 13 十六进制的数数方式与进位
- linux命令哲学,Linux哲学思想、history实现执行命令的时间、Linux命令格式
- Android 获取唯一机器码的代码
- python pow函数用法_Python代码中pow()函数具有哪些功能呢?
- 让外国黑客感到胆颤心惊的传奇人物郭盛华
- java list移除所有元素_Java - List集合中如何删除多个元素? remove( )方法 ?
- Flask蓝本与子域名
- UEFI shell - 脚本文件
- 汇编语言0x2c,ARM汇编语言(4) 指令、伪操作、伪指令学习
- javascript 实现在线多币种汇率实时换算
- python 模块paramiko
- 挣扎中的谷歌“蜻蜓项目”,Google 搜索到底能不能回归大陆?
- '/',‘\\’与‘\’的区别
- 苹果cms模板_苹果cms手机模板好看的有哪些?
热门文章
- Autonomous Health Framework (AHF) - Including TFA and ORAchk/EXAchk
- Linux学习-91-Discuz论坛安装
- 关于博达CMS制作网站的心得与体会
- 程序员电脑桌面是什么样的? 网友: IE浏览器必删, 不能留! 1
- Android 震动器操作类
- Spring Boot实现验证码功能
- 【龙芯1c库】移植硬浮点FPU
- 数据库 第九章 数据库系统概念 课后习题答案
- pdfbox创建pdf_PDFBox之文档创建
- hdu3555(数位dp)