官网:https://shardingsphere.apache.org/document/legacy/3.x/document/cn/features/sharding/concept/sharding/
1.下面已经实现了根据ID进行分表,使用的是shardingJDBC ID 生成策略为 SNOWFLAKE
2.自己传ID进来也可以根据ID进行分表
3.自己建表这些,mybatis配置这些,就不用多说了吧,只需要下面的配置就可以使用了,但是要注意配置文件中的每个参数名的配置层级,我在进行配置的时候,就是因为参数层级位置不对的问题弄了一下午,比如spring下面是shardingsphere 必须严格按照层级问题,重点注意
需要使用到的pom,需要注意如果shardingJDBC要和druid一起使用,那么druid是spring的jar包不是springboot的jar重点注意
<!-- shardingJDBC-->
<dependency><groupId>org.apache.shardingsphere</groupId><artifactId>sharding-jdbc-spring-boot-starter</artifactId><version>4.1.1</version>
</dependency><!-- 需要注意如果shardingJDBC要和druid一起使用,那么druid是spring的jar包不是springboot的jar --><!-- druid数据源-->
<dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.1.22</version>
</dependency>
全部采用YML配置进行数据源的配置
# 数据分片应用于单库分表操作
spring:shardingsphere:datasource:names: db1db1: # 数据库type: com.alibaba.druid.pool.DruidDataSourcedriver-class-name: com.mysql.jdbc.Driverurl: jdbc:mysql://127.0.0.1:3306/tg_project?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=UTCusername: rootpassword: rootsharding:tables:tg_weld_after_rule:# 配置表的分布,表的策略actual-data-nodes: db1.tg_weld_after_rule_$->{0..1}# 指定user_info表 主键id 生成策略为 SNOWFLAKEkey-generator:column: idtype: SNOWFLAKE# 指定分片策略table-strategy:inline:#根据年龄插入不同的表,如果年龄大于15岁插入user_info1表,如果年龄小于或等于15插入user_info2表sharding-column: idalgorithm-expression: tg_weld_after_rule_$->{id%2}druid:initial-size: 5 #初始化大小min-idle: 5 #最小max-active: 100 #最大max-wait: 60000 #连接超时时间##配置间隔多久进行一次检测,检测需要关闭的空闲连接,单位毫秒time-between-eviction-runs-millis: 60000##指定空闲连接最少空闲多久可以被清除min-evictable-idle-time-millis: 30000validation-query: select 'X'##当连接空闲时,是否执行连接测试test-while-idle: true##当从连接池借用连接时,是否测试该连接test-on-borrow: false##当连接归还到连接池时,是否测试该连接test-on-return: false##配置监控统计拦截的filters,去掉后监控界面sql无法统计,‘wall’ 用于防火墙filters: wall,stat,log4jpool-prepared-statements: truemax-pool-prepared-statement-per-connection-size: 20max-open-prepared-statements: 20# 通过connectProperties属性来打开mergeSql功能;慢SQL记录connectionProperties: druid.stat.slowSqlMillis=200;druid.stat.logSlowSql=true# WebStatFilter配置,说明请参考Druid Wiki,配置_配置WebStatFilter#是否启用StatFilter默认值trueweb-stat-filter:enabled: trueurl-pattern: /*exclusions: /druid/*,*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.icosession-stat-enable: truesession-stat-max-count: 10# StatViewServlet配置,说明请参考Druid Wiki,配置_StatViewServlet配置#是否启用StatViewServlet默认值truestat-view-servlet:enabled: trueurl-pattern: /druid/*reset-enable: truelogin-username: adminlogin-password: adminfilter:stat:db-type: mysqllog-slow-sql: trueslow-sql-millis: 5000wall:enabled: truedb-type: mysqlconfig:drop-table-allow: falseprops:# 打开sql输出日志sql:show: true