告别复杂分表逻辑!MyBatis-Plus 动态分表,一行注解全搞定
这是一个或许对你有用的社群 一对一交流/面试小册/简历优化/求职解惑欢迎加入「芋道快速开发平台」知识星球。下面是星球提供的部分资料《项目实战视频》从书中学往事上“练”《互联网高频面试题》面朝简历学习春暖花开《架构 x 系统设计》摧枯拉朽掌控面试高频场景题《精进 Java 学习指南》系统学习互联网主流技术栈《必读 Java 源码专栏》知其然知其所以然这是一个或许对你有用的开源项目国产Star破10w的开源项目前端包括管理后台、微信小程序后端支持单体、微服务架构RBAC权限、数据权限、SaaS多租户、商城、支付、工作流、大屏报表、ERP、CRM、AI大模型、IoT物联网等功能多模块https://gitee.com/zhijiantianya/ruoyi-vue-pro微服务https://gitee.com/zhijiantianya/yudao-cloud视频教程https://doc.iocoder.cn【国内首批】支持 JDK17/21SpringBoot3、JDK8/11Spring Boot2双版本来源juejin.cn/post/7569536278255616036为什么需要动态表名亮点特性安装快速上手3步进阶用法调试与性能常见问题FAQ适用场景与对比Demo 与快速验证路线图Roadmap生态与兼容这是我开源的 MyBatis-Plus 动态表名 Starter聚焦“简单、稳定、可扩展”的分表实践。本文通过动机、特性、安装、快速上手、进阶用法与常见问题带你在 10 分钟内掌握并落地动态表名分表。项目地址Starterhttps://github.com/sxhjlzl/mybatis-plus-dynamic-table-starter演示项目Demohttps://github.com/sxhjlzl//mybatis-plus-dynamic-table-demo为什么需要动态表名随着数据规模增长按时间或按用户分片的“分表”成为常态。传统落地往往涉及SQL 拼接、拦截器改造、策略维护与回归测试成本高且容易出错。这个 Starter 以“注解 配置”的方式将分表复杂度收敛到最小实现开箱即用零侵入注解驱动写业务像写普通 CRUD策略模式扩展自定义分表逻辑更顺畅完整日志与故障定位基于 Spring Boot MyBatis Plus Vue Element 实现的后台管理系统 用户小程序支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能项目地址https://github.com/YunaiV/ruoyi-vue-pro视频教程https://doc.iocoder.cn/video/亮点特性开箱即用自动装配默认启用日期分表按年/按月/按日一键切换哈希分表按哈希值均匀分片注解驱动DateSharding、HashSharding即可工具类支持DynamicTableUtils包裹任意代码块灵活优先级多策略并存优先级可控完整日志定位策略匹配与表名替换过程基于 Spring Cloud Alibaba Gateway Nacos RocketMQ Vue Element 实现的后台管理系统 用户小程序支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能项目地址https://github.com/YunaiV/yudao-cloud视频教程https://doc.iocoder.cn/video/安装Mavendependency groupIdcom.lizhuolun/groupId artifactIdmybatis-plus-dynamic-table-starter/artifactId version1.0.0/version /dependencyGradleimplementation com.lizhuolun:mybatis-plus-dynamic-table-starter:1.0.0运行环境Java 21Spring Boot 3.5.6MyBatis-Plus 3.5.14快速上手3步1.添加依赖确保引入 Spring Web 与 MyBatis-Plus Starter。2.配置分表策略在 application.yml 启用并编写策略。# 动态表名配置 dynamic-table: enabled:true enable-sql-log:true # 日期分表订单与日志按月/按日分表 date-sharding: -tables:[t_order,t_log] date-pattern:yyyyMM priority:1 -tables:[t_access_log] date-pattern:yyyyMMdd priority:2 # 哈希分表用户相关表分8张 hash-sharding: -tables:[t_user,t_user_profile] table-count:8 priority:103.代码即用注解或工具类两种方式任选。注解方式推荐Service public class OrderService { Autowired private OrderMapper orderMapper; // 自动根据日期分表如 t_order_202501 DateSharding(value t_order, dateParam date) public Order create(Order order, LocalDate date) { orderMapper.insert(order); return order; } }工具类方式灵活包裹任意代码块public ListOrder queryByDate(LocalDate date) { return DynamicTableUtils.executeWithDate(t_order, date, () - { return orderMapper.selectList(null); }); }进阶用法多表同时路由一次性指定多个逻辑表到实际分表批量操作一致。MapString, String tableMap Map.of( t_order, t_order_202501, t_log, t_log_202501 ); DynamicTableUtils.executeWithTables(tableMap, () - { orderMapper.insert(order); logMapper.insert(log); });自定义策略实现TableRouterStrategy即可接入你自己的路由规则。Component publicclass CustomTableRouterStrategy implements TableRouterStrategy { Overridepublic boolean match(String logicTableName) { returnt_custom.equals(logicTableName); } Overridepublic String getActualTableName(String logic, Object ctx) { return logic _ suffix(ctx); } Overridepublic String getStrategyName() { returnCustomTableRouterStrategy; } Overridepublic int getPriority() { return100; } }调试与性能开启日志定位dynamic-table: enable-sql-log: true logging: level: com.lizhuolun.mybatis.dynamic: DEBUG推荐连接池spring: datasource: hikari: maximum-pool-size: 20 minimum-idle: 5 connection-timeout: 30000 idle-timeout: 600000 max-lifetime: 1800000常见问题FAQ表名未替换检查是否在tables列表中、策略是否匹配、日志是否打印。策略不生效确认注解参数如dateParam/hashKey与方法入参对应AOP 正常工作。SQL 异常核验实际分表是否存在、表结构是否一致查看日志中的替换结果。适用场景与对比业务归档订单/日志随时间增长按月/日归档查询更快。用户分片按照用户维度分散热点写入与读压力。与手写拦截器对比本项目更轻量、配置化、可扩展注解即用维护成本低。Demo 与快速验证进入mybatis-plus-dynamic-table-demo根据 README 初始化数据库并启动mvn spring-boot:run使用curl或 Postman 调用示例接口观察 SQL 替换与分表效果路线图Roadmap更多策略模板与表达式支持更丰富的示例与最佳实践生产问题排查指引与灰度方案生态与兼容运行Java 21 / Spring Boot 3.5.6 / MyBatis-Plus 3.5.14许可Apache-2.0贡献欢迎提交 Issue / PR详见仓库 CONTRIBUTING欢迎加入我的知识星球全面提升技术能力。 加入方式“长按”或“扫描”下方二维码噢星球的内容包括项目实战、面试招聘、源码解析、学习路线。文章有帮助的话在看转发吧。 谢谢支持哟 (*^__^*

相关新闻

ST(意法半导体)FlightSense™ VL53L1X 激光测距传感器

ST(意法半导体)FlightSense™ VL53L1X 激光测距传感器

1. 引言:从传统红外到光子飞行时间 在过去的几十年里,传统的红外(IR)传感器广泛应用于接近检测和测距。然而,这类传感器(通常基于三角测量法或反射率检测)存在一个根本性的缺陷:测量精度严重依赖于被测物体的颜色和表面反射率。例如,一个黑色物体吸收大量红外光,会导…

2026/5/17 9:32:44 阅读更多 →
OpenClaw 金融 Skill:你的私人金融顾问

OpenClaw 金融 Skill:你的私人金融顾问

“金融 X OpenClaw:你的私人金融顾问”活动于2026年3月8日在深圳市光明区举办,聚焦于从OpenClaw的安装配置到真实金融场景的实操应用,旨在跑通完整的金融任务协同流程。活动目标:1.OpenClaw 安装和使用入门。2.金融 OpenClaw&…

2026/5/17 9:32:43 阅读更多 →
【C++】虚函数表(vtable),函数重载,函数签名,

【C++】虚函数表(vtable),函数重载,函数签名,

多态的底层实现逻辑编译器找对应虚函数的步骤:this指针->vptr指针->vtable表(虚函数表)->对应的虚函数(通过指针偏移,vptr就是虚函数表的起始指针,函数指针在虚函数表占的位置也是固定的&#xff…

2026/5/17 9:32:43 阅读更多 →

最新新闻

基于Databricks的企业级AI Agent生产实践:从架构设计到部署运维

基于Databricks的企业级AI Agent生产实践:从架构设计到部署运维

🚀 30款热门AI模型一站整合,DeepSeek/GLM/Qwen 随心用,限时 5 折。 👉 点击领海量免费额度 如果你正在考虑将AI Agent引入企业生产环境,可能会面临这样的困境:在本地开发环境中跑得飞快的Agent原型&…

2026/7/6 3:42:09 阅读更多 →
飞书卡片表格渲染踩坑记:从 Markdown 到原生 table 组件的迁移实战

飞书卡片表格渲染踩坑记:从 Markdown 到原生 table 组件的迁移实战

背景 团队每日通过飞书推送项目晨报和日报,内容从项目管理平台实时拉取,包含任务统计、进度列表、风险项等多维数据,天然需要表格来承载。 最初的实现方案是飞书消息推送 纯文本,格式简陋,阅读体验差。于是决定升级为…

2026/7/6 3:40:09 阅读更多 →
构建AI毒舌投资人:用Prompt工程验证副业想法的可行性

构建AI毒舌投资人:用Prompt工程验证副业想法的可行性

🚀 30款热门AI模型一站整合,DeepSeek/GLM/Qwen 随心用,限时 5 折。 👉 点击领海量免费额度 最近在折腾各种 AI 工具时,我发现一个挺有意思的现象:很多人拿到一个强大的 AI 模型,比如 DeepSee…

2026/7/6 3:40:09 阅读更多 →
认识安企CMS-系统和模板文件结构

认识安企CMS-系统和模板文件结构

了解安企CMS安装后的完整目录结构,掌握主程序、配置文件、模板目录、附件目录、运行时数据等每个关键目录和文件的具体作用,方便后续日常维护和二次开发。安企CMS 安装后的完整目录结构概览,带你了解每个目录和文件的用途。一、顶层目录结构 …

2026/7/6 3:40:09 阅读更多 →
LB200倒置显微镜在梅毒螺旋体体外培养观察中的解决方案

LB200倒置显微镜在梅毒螺旋体体外培养观察中的解决方案

LB200倒置显微镜在梅毒螺旋体体外培养观察中的解决方案 梅毒螺旋体体外培养:微观世界的艰难跋涉 梅毒螺旋体是一种难以在体外环境中生存和繁殖的特殊病原体。其体外培养面临着很高的技术挑战,需要精确模拟人体内的复杂环境。在这一过程中,对培…

2026/7/6 3:38:09 阅读更多 →
PCB布局3大常见误区解析:从BGA阴影效应到40mil间距的工程取舍

PCB布局3大常见误区解析:从BGA阴影效应到40mil间距的工程取舍

PCB布局3大常见误区解析:从BGA阴影效应到40mil间距的工程取舍在硬件工程师的日常工作中,PCB布局往往是最容易被低估却又最影响最终产品性能的环节。许多初学者在完成原理图设计后,常常迫不及待地将元器件"塞"进电路板,却…

2026/7/6 3:38:09 阅读更多 →

日新闻

H2 与 MySQL 单元测试兼容性:5 个关键 SQL 语句差异与规避方案

H2 与 MySQL 单元测试兼容性:5 个关键 SQL 语句差异与规避方案

H2与MySQL单元测试兼容性:5个关键SQL语句差异与规避方案1. 单元测试中的数据库兼容性挑战在Java开发领域,单元测试是保证代码质量的重要环节。当应用涉及数据库操作时,测试环境的搭建往往成为开发者的痛点。H2数据库因其轻量级、内存模式和快…

2026/7/6 0:01:17 阅读更多 →
Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘

Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘

Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘 【免费下载链接】rbtray A fork of RBTray from http://sourceforge.net/p/rbtray/code/. 项目地址: https://gitcode.com/gh_mirrors/rb/rbtray 你是否厌倦了Windows任务栏上密密麻麻的图标&…

2026/7/6 0:01:17 阅读更多 →
Visual C++ 运行时库一键安装终极指南:告别DLL缺失烦恼

Visual C++ 运行时库一键安装终极指南:告别DLL缺失烦恼

Visual C 运行时库一键安装终极指南:告别DLL缺失烦恼 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist 你是否曾经遇到过这样的情况:下载了…

2026/7/6 0:05:19 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/5 0:03:34 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/5 0:03:34 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/5 0:07:38 阅读更多 →

月新闻