← 返回项目总览

数据分片插件

MyBatis 拦截器驱动的声明式数据分片方案

开发者工具 Java / Spring Boot

项目简介

基于 Spring Boot + MyBatis + SQLite 的数据分片插件项目,实现了一个强大的 MyBatis 分片插件。通过 @Sharding 注解声明式标记需要分片的 Mapper 方法,配合 ThreadLocal 管理的分片上下文,由 MyBatis 拦截器在 SQL 执行前自动改写 SQL,将分片条件拼接到原始 SQL 中,实现透明的数据分片查询。

工作流程

1
Service 层设置分片上下文(分片总数 + 当前分片索引)
2
调用带 @Sharding 注解的 Mapper 方法
3
ShardingInterceptor 拦截 SQL 执行,读取分片上下文
4
自动将分片条件(如 MOD(id, 3) = 0)拼接到原始 SQL 中
5
执行改写后的 SQL 并返回结果,Service 层清除上下文

核心功能

技术栈一览

Java 17 Spring Boot 3.2 MyBatis 3.0.3 SQLite 3.45 ThreadLocal Lombok