当前位置: 首页 > news >正文

MySQL分库分表的实现(五)--公共表处理

一、公共表的定义
存储固定数据的表,表数据很少发生变化,查询时候经常进行关联,如字典表。

二、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-tables=t_dict spring.shardingsphere.sharding.tables.t_dict.key-generator.column=dict_id spring.shardingsphere.sharding.tables.t_dict.key-generator.type=SNOWFLAKE
spring.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表指定数据删除

http://www.jsqmd.com/news/495012/

相关文章:

  • 百度文库下载免费方法_百度文库文档免费下载
  • 【华为OD机试真题】黑白棋 · N×N棋盘移动范围问题(Java/Go)
  • TypeScript的as断言与satisfies操作符的类型安全比较
  • AI工具帮助程序员做网页的经历
  • 基于SpringBoot+Vue的智能健身跟踪系统毕设项目(完整源码+论文+部署)
  • ICANN是什么组织?ICANN与域名是什么关系?为什么注册商需要获得ICANN的授权?
  • Docker部署.NET10 项目
  • 测试宇宙假说:我们是否生活在模拟测试中?——软件测试从业者的专业视角
  • Java常用API之String类:
  • ABB机器人仿真工作站:超便捷教学实训平台
  • Rust的std--mem--transmute:类型转换的终极武器(及危险)
  • AI检测算法不断升级:免费降AI工具如何应对新挑战
  • 使用Jsoup爬取豆瓣电影Top250(附Java代码)
  • Redis 队列学习笔记(List Queue)
  • 告别API封号焦虑:分享一个稳定的Claude Code与OpenAI Codex接入方案
  • PMIC小记
  • server-http.ts 文件分析
  • 编程语言特性比较与适用场景选择建议
  • 英伟达GTC 2026“芯片全家桶”震撼登场,微美全息构建全栈算力创新体系迎风而上
  • 用户生成内容:海量数据存储与检索的优化
  • 46页精品PPT | 数据治理大数据平台资源规划与建设解决方案
  • python-flask大学生志愿者组织活动报名管理系统_9fcw0
  • 从315曝光的LLM语料污染看GEO工程化治理
  • 容器化部署最佳实践指南
  • 云原生应用开发中的服务网格实践与服务发现机制
  • 奥尔特云智慧档案:从纸库到数库转型,赋能档案数字化智能化发展
  • 防爆高低温试验箱安全监测智能 - 品牌推荐大师
  • 挖耳勺会伤害到鼓膜吗?可视挖耳勺是智商税吗?可视挖耳勺推荐
  • 最近发现一个挺有意思的AI工具:OpenClaw,用起来感觉不错
  • 导购机器人设计