閱讀必知
本文只介紹SpringBoot如何整合ShardingSphere的主要配置及實現
版本介紹
SpringBoot : 2.3.0.RELEASE
MyBatis-Plus : 3.3.0
ShardingSphere : 4.0.0
MySql : 5.7
pom主要依賴
<!--sharding-jdbc-->
<dependency>
<groupId>org.apache.shardingsphere</groupId>
<artifactId>sharding-jdbc-spring-boot-starter</artifactId>
<version>4.0.0</version>
</dependency>
<!--Mybatis-plus-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.3.0</version>
</dependency>
<!--德魯伊-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.0.31</version>
</dependency>
<!-- mysql的依賴 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
配置文件(ShardingSphere)
server:
port:8002
#應用名稱
application:
name:shardingSphere-demo
spring:
#日期格式化
jackson:
date-format:yyyy-MM-dd HH:mm:ss
time-zone:GMT+8
#Sharding-jdbc
shardingsphere:
datasource:
#指定數據源
names: m0,m1
m0:
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://192.168.101.1:3306/master?useUnicode=true&characterEncoding=utf-8&useSSL=false
username: root
password:
m1:
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://192.168.101.2:3306/slave?useUnicode=true&characterEncoding=utf-8&useSSL=false
username: root
password:
sharding:
tables:
#配置需要水平分表的表
user:
#指定數據庫表的數據分布情況,配置數據節點
##actual-data-nodes: m$->{1..2}.t_user_$->{0..1} user_0 user_1
actual-data-nodes: ds0.user_$->{0..1}
key-generator:
#配置主鍵
column: id
#主鍵采用雪花算法
type: SNOWFLAKE
#配置分庫策略
database-strategy:
inline:
sharding-column: id
#此處配置下面主從分離起的key名稱
algorithm-expression: ds0
#配置表的分片策略,包括分片鍵和分片算法
table-strategy:
inline:
#配置分表建
sharding-column: id
#此處配置水平分表策略,user_$->{id % 2}相當于user_0,user_1
algorithm-expression: user_$->{id % 2}
#配置主從數據庫 一主多從 map
master-slave-rules:
ds0:
#配置主庫
master-data-source-name:m0
#配置從庫
slave-data-source-names:m1
#顯示Sql
props:
sql:
show:true
,