ShardingSphere-JDBC(ShardingJDBC)使用手册(按本项目写法)

张开发
2026/6/9 20:16:22 15 分钟阅读
ShardingSphere-JDBC(ShardingJDBC)使用手册(按本项目写法)
ShardingSphere-JDBC(ShardingJDBC)使用手册(按本项目写法)你可以把本文当成“下次我新建一个模块,要怎么集成、怎么用 ShardingJDBC”的步骤清单。内容完全贴合你当前项目(Spring Boot + tk.mybatis + ShardingSphere 5.2.1)。0. 你在用的是什么?你不是在用 MySQL 的分区,也不是在写多数据源代码你用的是ShardingSphere-JDBC:它在 JDBC 层拦截你发出的 SQL,把对“逻辑表”的操作,路由/改写到某个“真实表”在你项目里:你写/Mapper 生成的 SQL 面向逻辑表:collection_library数据库里真实存在的表是:collection_library_0..3ShardingSphere 根据id计算,决定落到哪一张真实表1. 下一次要集成(从 0 到 1)怎么做?下面以“把某张表做成 4 张分表”为例。注意id的类型是bigint,其他字段随便CREATE TABLE `collection_library_0` ( `id` bigint NOT NULL, `title` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;CREATE TABLE `collection_library_1` ( `id` bigint NOT NULL, `title` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;CREATE TABLE `collection_library_2` ( `id` bigint NOT NULL, `title` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;CREATE TABLE `collection_library_3` ( `id` bigint NOT NULL, `title` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;1.1 Maven 依赖(必需)!-- Sharding-JDBC 依赖 -- dependency groupIdorg.apache.shardingsphere/groupId artifactIdshardingsphere-jdbc-core-spring-boot-starter/artifactId version5.2.1/version /dependency dependency groupIdorg.yaml/groupId artifactIdsnakeyaml/artifactId version2.2/version /dependency1.2 application.yml1.3 application-dev.yml(核心:数据源 + 分片规则)你只需要记住一句话:写了spring.shardingsphere.datasource之后,Spring 注入的 DataSource 就是 ShardingSphere 的 DataSource,MyBatis / Quartz 都会用它。你项目当前配置结构(概念):spring.shardingsphere.datasource:定义真实数据库连接(ds0)spring.shardingsphere.rules.sharding.tables:定义哪些逻辑表要分片,以及分片策略spring.shardingsphere.rules.sharding.sharding-algorithms:定义分片算法(比如 HASH_MOD)1.3.1 可直接复用的最小配置模板(按你现在的写法)server:port:8081spring:application:name:zzzzzzshardingsphere:datasource:names:ds0ds0:type:com.zaxxer.hikari.HikariDataSourcedriver-class-name:com.mysql.cj.jdbc.Driverjdbc-url:jdbc:mysql://localhost:3306/table?useUnicode=truecharacterEncoding=UTF-8serverTimezone=UTCuseSSL=falseusername:rootpassword:rootrules:sharding:tables:collection_library:actual-data-nodes:ds0.collection_library_$-{0..3}table-strategy:standard:sharding-column:idsharding-algorithm-name:collection

更多文章