springboot + mybatis-plus + sharding-jdbc 实现单库分表

一.先知道 sharding-jdbc 是个什么 可以再官网看一下: https://shardingsphere.apache.org/index_zh.html

二.引入maven 依赖, 注意每个版本的配置不一样,我这里是4.X 其他版本的配置可以去官网查看

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

<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.2.3</version>
</dependency>

三. 如果出现 sqlTemplate 等异常 说明项目里面引入了 druid-spring-boot-starter 依赖 和 原生的 druid 冲突了 这里需要使用原生的或者可以把 依赖换成这个

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

 

四. yml 配置 分表配置,这里只是简单的分表

 

spring:
shardingsphere:
datasource:
names: ds01
ds01: # 数据源
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://192.168.254.106:5166/evaluate_center?useUnicode=true&characterEncoding=utf-8&useSSL=false
username: admin
password: admindgg
sharding:
tables: # 分表配置
test:
actualDataNodes: ds01.test${0..1}
# 分片键(分表字段)这里通过id 分表,具体字段可以自己定义,分表规则
table-strategy:
inline:
shardingColumn: id
algorithm-expression: test${id % 2}

keyGenerator:
type: SNOWFLAKE
column: id
props:
sql:
# 打印SQL
show: true


五. 创建数据库表 test0, test1

 

 

 

六. 然后创建对应的实体,注意这里的@TableName表名不要给后缀比如test0,test1,直接写test,不然只会插入指定的表

 

 

 

七. 创建对应的controller,service,mapper,这里就不赘述这个了

 

八. 调用测试,调用添加接口可以看到数据插入执行的sql,并且查看数据库都有数据,可以看出id 为偶数的在test0,id 为奇数的在test1

 

 

 

 

 

 

 

 

 

test0

 

 

 

test1

 

 

 

 

九. 测试查询: 通过分表id 查询,和某个字段分页查询

 

通过id 查询

 

 

 

 

 


分页查询,如果使用mybatis-plus 分页记得加上分页插件

 

 

 

 

 

 



 

 

 

 




posted @ 2021-08-13 17:26  历尽千帆归来任是少年  阅读(1291)  评论(0编辑  收藏  举报