MyBatis 拦截器驱动的声明式数据分片方案
基于 Spring Boot + MyBatis + SQLite 的数据分片插件项目,实现了一个强大的 MyBatis 分片插件。通过 @Sharding 注解声明式标记需要分片的 Mapper 方法,配合 ThreadLocal 管理的分片上下文,由 MyBatis 拦截器在 SQL 执行前自动改写 SQL,将分片条件拼接到原始 SQL 中,实现透明的数据分片查询。
@Sharding 注解的 Mapper 方法MOD(id, 3) = 0)拼接到原始 SQL 中@Sharding 注解 — 声明式标记需要分片的 Mapper 方法,支持 {totalShards} 和 {currentShard} 占位符ShardingContextHolder 管理分片总数和当前分片索引ShardingInterceptor 拦截器根据分片参数动态改写 SQL