Sharding-JDBC(版本3.0) 升级到(版本4.0)需要修改的地方

1 修改maven依赖

<dependency>
      <groupId>org.apache.shardingsphere</groupId>
      <artifactId>sharding-jdbc-spring-boot-starter</artifactId>
      <version>4.0.0-RC2</version>
</dependency>

2 修改application.properties文件

1 application.properties配置项前缀调整:
sharding.jdbc 改成 spring.shardingsphere

2 分片策略去掉config:
config.sharding –> 去掉config

3 修改主键属性:
key-generator-column-name 改成 key-generator.column 

4 配置自增列值生成器类型:
spring.shardingsphere.sharding.tables.order_info.key-generator.type=SNOWFLAKE
spring.shardingsphere.sharding.tables.order_item.key-generator.type=SNOWFLAKE

5 显示运行的sql改成
spring.shardingsphere.props.sql.show=true

3 检查java文件,实现类的包名变了,需要重新导包


例如把以下项目中升级到4.0,配置文件如下
项目地址:https://blog.csdn.net/qq_41712271/article/details/105730699 

# 数据库连接池配置变量
initialSize=5
minIdle=5
maxIdle=100
maxActive=20
maxWait=60000
timeBetweenEvictionRunsMillis=60000
minEvictableIdleTimeMillis=300000

# --------------- 配置真实的数据源 ---------------
# 真实数据源配置,这里的ds0,ds1会在下面的配置中引用
spring.shardingsphere.datasource.names=ds0,ds1
# 数据库连接1
spring.shardingsphere.datasource.ds0.type=com.alibaba.druid.pool.DruidDataSource
spring.shardingsphere.datasource.ds0.driver-class-name=com.mysql.jdbc.Driver
# 坑,注意这里是key是url,如果使用默认数据源com.zaxxer.hikari.HikariDataSource,则是jdbc-url
spring.shardingsphere.datasource.ds0.url=jdbc:mysql://localhost:3306/ds_0?useSSL=false&serverTimezone=GMT
spring.shardingsphere.datasource.ds0.username=root
spring.shardingsphere.datasource.ds0.password=123456

# 初始连接数
spring.shardingsphere.datasource.ds0.initialSize=${initialSize}
# 最小连接数
spring.shardingsphere.datasource.ds0.minIdle=${minIdle}
# 最大连接池数量
spring.shardingsphere.datasource.ds0.maxActive=${maxActive}
# 配置获取连接等待超时的时间
spring.shardingsphere.datasource.ds0.maxWait=${maxWait}
# 用来检测连接是否有效的sql
spring.shardingsphere.datasource.ds0.validationQuery=SELECT 1 FROM DUAL
# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
spring.shardingsphere.datasource.ds0.timeBetweenEvictionRunsMillis=${timeBetweenEvictionRunsMillis}
# 配置一个连接在池中最小生存的时间,单位是毫秒
spring.shardingsphere.datasource.ds0.minEvictableIdleTimeMillis=${minEvictableIdleTimeMillis}

# 数据库连接2
spring.shardingsphere.datasource.ds1.type=com.alibaba.druid.pool.DruidDataSource
spring.shardingsphere.datasource.ds1.driver-class-name=com.mysql.jdbc.Driver
spring.shardingsphere.datasource.ds1.url=jdbc:mysql://localhost:3306/ds_1?useSSL=false&serverTimezone=GMT
spring.shardingsphere.datasource.ds1.username=root
spring.shardingsphere.datasource.ds1.password=123456

# 初始连接数
spring.shardingsphere.datasource.ds1.initialSize=${initialSize}
# 最小连接数
spring.shardingsphere.datasource.ds1.minIdle=${minIdle}
# 最大连接池数量
spring.shardingsphere.datasource.ds1.maxActive=${maxActive}
# 配置获取连接等待超时的时间
spring.shardingsphere.datasource.ds1.maxWait=${maxWait}
# 用来检测连接是否有效的sql
spring.shardingsphere.datasource.ds1.validationQuery=SELECT 1 FROM DUAL
# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
spring.shardingsphere.datasource.ds1.timeBetweenEvictionRunsMillis=${timeBetweenEvictionRunsMillis}
# 配置一个连接在池中最小生存的时间,单位是毫秒
spring.shardingsphere.datasource.ds1.minEvictableIdleTimeMillis=${minEvictableIdleTimeMillis}

# --------------- 数据库的分片策略 ---------------
# 数据库的分片策略 根据uid,分成ds_0,ds_1两个数据库
# 分库列
spring.shardingsphere.sharding.default-database-strategy.inline.sharding-column=uid
# 分库算法
spring.shardingsphere.sharding.default-database-strategy.inline.algorithm-expression=ds$->{uid % 2}

# --------------- 表的的分片策略(可配置多个) ---------------
# 配置逻辑表order_info实际节点,这里的ds就是引用上面定义的名称
# 其中 sharding.tables.order_info是逻辑表,ds$->{0..1}.order_info是真实的表
spring.shardingsphere.sharding.tables.order_info.actual-data-nodes=ds$->{0..1}.order_info_$->{0..1}
# 配置自动生成主键,生成分布式id,防止主键重复
spring.shardingsphere.sharding.tables.order_info.key-generator.column=oid
# 使用snowflake算法
spring.shardingsphere.sharding.tables.order_info.key-generator.type=SNOWFLAKE
# 表的分片策略根据 oid,分成order_info_0,order_info_1两个表
# 指定表分片的列,表示我们是使用哪个列进行分片
spring.shardingsphere.sharding.tables.order_info.table-strategy.inline.sharding-column=oid
# 表分片 算法表达式
# ----------- 这里不能跟分库策略一样,否则会导致有一半数据表没有机会插入数据 -----------
spring.shardingsphere.sharding.tables.order_info.table-strategy.inline.algorithm-expression=order_info_${(oid % 5) % 2}

# 配置生成自增ID的雪花算法,单台服务器可以不配置


# 定义逻辑表order_item的真实数据节点,生成分布式主键id,分表列,分表的规则
spring.shardingsphere.sharding.tables.order_item.actual-data-nodes=ds$->{0..1}.order_item_$->{0..1}
spring.shardingsphere.sharding.tables.order_item.key-generator.column=itemId
spring.shardingsphere.sharding.tables.order_item.key-generator.type=SNOWFLAKE
spring.shardingsphere.sharding.tables.order_item.table-strategy.inline.sharding-column=oid
spring.shardingsphere.sharding.tables.order_item.table-strategy.inline.algorithm-expression=order_item_${(oid % 5) % 2}

# 绑定表,效率高,避免出现笛卡尔
# 有文章说主表和子表的分片规则一样的时候,绑定表生效,测试时两个表可以不一样,也会生效
spring.shardingsphere.sharding.binding-tables[0]= order_info,order_item

spring.shardingsphere.sharding.broadcast-tables[0]=guangbobiao

# 未配置分片规则的表将通过默认数据源定位
# 有些情况下,我们某些表并不需要进行分表分库,所以需要这样设置
spring.shardingsphere.sharding.default-data-source-name=ds1


# 显示运行的sql
spring.shardingsphere.props.sql.show=true

 

©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页