官网: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: db1
db1: # 数据库
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/tg_project?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=UTC
username: root
password: root
sharding:
tables:
tg_weld_after_rule:
# 配置表的分布,表的策略
actual-data-nodes: db1.tg_weld_after_rule_$->{0..1}
# 指定user_info表 主键id 生成策略为 SNOWFLAKE
key-generator:
column: id
type: SNOWFLAKE
# 指定分片策略
table-strategy:
inline:
#根据年龄插入不同的表,如果年龄大于15岁插入user_info1表,如果年龄小于或等于15插入user_info2表
sharding-column: id
algorithm-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: 30000
validation-query: select 'X'
##当连接空闲时,是否执行连接测试
test-while-idle: true
##当从连接池借用连接时,是否测试该连接
test-on-borrow: false
##当连接归还到连接池时,是否测试该连接
test-on-return: false
##配置监控统计拦截的filters,去掉后监控界面sql无法统计,‘wall’ 用于防火墙
filters: wall,stat,log4j
pool-prepared-statements: true
max-pool-prepared-statement-per-connection-size: 20
max-open-prepared-statements: 20
# 通过connectProperties属性来打开mergeSql功能;慢SQL记录
connectionProperties: druid.stat.slowSqlMillis=200;druid.stat.logSlowSql=true
# WebStatFilter配置,说明请参考Druid Wiki,配置_配置WebStatFilter
#是否启用StatFilter默认值true
web-stat-filter:
enabled: true
url-pattern: /*
exclusions: /druid/*,*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico
session-stat-enable: true
session-stat-max-count: 10
# StatViewServlet配置,说明请参考Druid Wiki,配置_StatViewServlet配置
#是否启用StatViewServlet默认值true
stat-view-servlet:
enabled: true
url-pattern: /druid/*
reset-enable: true
login-username: admin
login-password: admin
filter:
stat:
db-type: mysql
log-slow-sql: true
slow-sql-millis: 5000
wall:
enabled: true
db-type: mysql
config:
drop-table-allow: false
props:
# 打开sql输出日志
sql:
show: true