shardingsphere-jdbc 整合 springboot

article/2025/9/12 16:02:09

shardingsphere官网地址

https://shardingsphere.apache.org/document/5.2.0/cn/user-manual/shardingsphere-jdbc/spring-boot-starter/rules/sharding/

当前我们演示的是水平分表

1、基础环境配置以及依赖管理

1.1 创建数据库表结构

CREATE TABLE `address_0` (`id` bigint(20) NOT NULL,`name` varchar(255) DEFAULT NULL,`addr` varchar(255) DEFAULT NULL,PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;CREATE TABLE `address_1` (`id` bigint(20) NOT NULL,`name` varchar(255) DEFAULT NULL,`addr` varchar(255) DEFAULT NULL,PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

1.2 maven依赖

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.4.1</version>
</dependency>
<dependency><groupId>org.apache.shardingsphere</groupId><artifactId>shardingsphere-jdbc-core-spring-boot-starter</artifactId><version>5.2.0</version>
</dependency>
<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId>
</dependency>

1.3 水平分表 application.properties 文件

server.port=8200
spring.application.name=sharding
## 单节点
spring.shardingsphere.mode.type=Standalone
## 日志打印
spring.shardingsphere.props.sql-show=true
# 配置真实数据源,多个英文逗号间隔
spring.shardingsphere.datasource.names=ds1# 配置第 1 个数据源
## 格式 spring.shardingsphere.datasource.<定义的数据源名称>.
spring.shardingsphere.datasource.ds1.type=com.zaxxer.hikari.HikariDataSource
spring.shardingsphere.datasource.ds1.driver-class-name=com.mysql.jdbc.Driver
spring.shardingsphere.datasource.ds1.jdbc-url=jdbc:mysql://192.168.1.184:3306/db1?useSSL=false&characterEncoding=UTF8
spring.shardingsphere.datasource.ds1.username=root
spring.shardingsphere.datasource.ds1.password=root## 格式 spring.shardingsphere.rules.sharding.tables.<定义的表名称>.
spring.shardingsphere.rules.sharding.tables.address.actual-data-nodes=ds1.address_$->{0..1}
spring.shardingsphere.rules.sharding.tables.address.table-strategy.standard.sharding-column=id
spring.shardingsphere.rules.sharding.tables.address.table-strategy.standard.sharding-algorithm-name=address-inline## 主键标识 以及生产策略
spring.shardingsphere.rules.sharding.tables.address.key-generate-strategy.column=id
spring.shardingsphere.rules.sharding.tables.address.key-generate-strategy.key-generator-name=snowflake## 主键取模存储具体那张表上
spring.shardingsphere.rules.sharding.sharding-algorithms.address-inline.type=INLINE
spring.shardingsphere.rules.sharding.sharding-algorithms.address-inline.props.algorithm-expression=address_$->{id % 2}## sharding主键生成策略
spring.shardingsphere.rules.sharding.key-generators.snowflake.type=SNOWFLAKE## 开启mybatis-plus的扫描位置
mybatis-plus.mapper-locations=classpath*:com/cloud/**/xml/*Mapper.xml

2、创建对应实体和相关控制层

2.1 创建对应类

@Data
public class Address  {@TableId(value = "id")private Long id;@TableField("name")private String name;@TableField("addr")private String addr;
}
@RestController
public class AddressController {@Autowiredprivate AddressService addressService;private static String[] addrArrays = new String[]{"青岛","北京","上海","遂州","杭州","烟台","内蒙古","海南","台湾","香港","石家庄"};private static String[] fisterName = new String[]{"张","北","上","遂","杭","烟","古","海","台","港","石"};@GetMapping("/saveAddr")public void save(){int nextName = new Random().nextInt(10);List<Address> addressList = new ArrayList<>();for (int i = 0; i < 10; i++) {Address address = new Address();int nextInt = new Random().nextInt(10);address.setName(fisterName[nextName]+"-"+i);address.setAddr(addrArrays[nextInt]);addressList.add(address);}addressService.saveBatch(addressList);}@GetMapping("/getAddr")public Object get(){return addressService.list(new QueryWrapper<Address>().last(" LIMIT 10 "));}
}

2.2 调用结果与表数据查看

2.2.1 插入数据

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.2.2 查询数据

在这里插入图片描述

在这里插入图片描述

2.2.3 修改数据

在这里插入图片描述

2.2.4 删除数据

在这里插入图片描述

3 分库分表 application.yml

server:port: 8200
spring:application:name: shardingshardingsphere:mode:type: Standaloneprops:sql-show: truedatasource:names: db-0,db-1db-0:jdbc-url: jdbc:mysql://192.168.1.184:3306/ddd1?useSSL=false&characterEncoding=UTF8username: rootpassword: rootdriver-class-name: com.mysql.cj.jdbc.Drivertype: com.zaxxer.hikari.HikariDataSourcedb-1:jdbc-url: jdbc:mysql://192.168.1.184:3306/bbb2?useSSL=false&characterEncoding=UTF8username: rootpassword: rootdriver-class-name: com.mysql.cj.jdbc.Drivertype: com.zaxxer.hikari.HikariDataSourcerules:sharding:tables:address:##分库策略database-strategy:standard:sharding-column: idsharding-algorithm-name: id-inlineactual-data-nodes: db-$->{0..1}.address_$->{0..1}##分表策略table-strategy:standard:sharding-column: idsharding-algorithm-name: address-inlinekey-generate-strategy:column: idkey-generator-name: snowflakesharding-algorithms:id-inline:type: INLINEprops:algorithm-expression: db-$->{id % 2}address-inline:type: INLINEprops:algorithm-expression: address_$->{id % 2}key-generators:snowflake:type: SNOWFLAKEmybatis-plus:#  **  代表多级  *代表一级mapper-locations: classpath*:com/cloud/**/xml/*Mapper.xml

http://chatgpt.dhexx.cn/article/y8WYvCk8.shtml

相关文章

如果张东升是个程序员

张东升是一家互联网公司的程序员&#xff0c;一直以来都勤勤恳恳老实工作。 可最近一段时间&#xff0c;行业不景气&#xff0c;老板不但下令开启了996的工作模式&#xff0c;更要命的是频频更改需求&#xff0c;弄得大家是敢怒不敢言。 时间一久&#xff0c;很多员工开始消极…

专访关东升:松耦合分层架构设计

关东升,国内知名iOS技术作家,iOS技术顾问,高级培训讲师,移动开发专家。拥有16年软件开发经验、8年培训行业经验。精通iOS、Android和 Windows Phone 7及Html5等移动开发技术。在App Store发布多款游戏和应用软件,擅长移动平台的应用和游戏类项目开发。目前主要从事iOS应用…

Java从小白到大牛第3篇 【进阶篇】-关东升-专题视频课程

Java从小白到大牛第3篇 【进阶篇】—4371人已学习 课程介绍 本视频是智捷课堂推出的一套“Java语言学习立体教程”的视频第三部分&#xff0c;读者以及观看群是初级小白&#xff0c;通过本视频的学习能够成为Java大牛。本主要内容包括&#xff1a;异常处理、集合、泛型、文…

Python项目实战:数据可视化与股票数据分析-关东升-专题视频课程

Python项目实战&#xff1a;数据可视化与股票数据分析—333人已学习 课程介绍 本视频内容包括使用Matplotlib绘制图表、MySQL数据库、Python访问数据库和Lambda表达式。 目录&#xff1a; 23.1 使用Matplotlib绘制图表 23.1.1 安装Matplotlib 23.1.2 图表基本构成要素 23.1…

【ShardingSphere技术专题】「ShardingJDBC实战阶段」SpringBoot之整合ShardingJDBC实现分库分表(JavaConfig方式)

前提介绍 ShardingSphere介绍 ShardingSphere是一套开源的分布式数据库中间件解决方案组成的生态圈&#xff0c;它由Sharding-JDBC、Sharding-Proxy和Sharding-Sidecar&#xff08;计划中&#xff09;这3款相互独立的产品组成。 他们均提供标准化的数据分片、分布式事务和数据…

关东升给的ios学习路线图(可以借鉴)

来源&#xff1a; http://www.zhijieketang.com/classroom/3/introduction 首页 课程 免费课程 会员 关于我们 登录 注册 首页 iOS课程 iOS会员-iOS开发学习路线图 iOS会员-iOS开发学习路线图 扫二维码继续学习 (0评价) 价格&#xff1a; 1500 金币 学员(17) 课程(37) …

关东升的《从零开始学Swift》3月9日已经上架

大家一直期盼的《从零开始学Swift》于3月9日已经上架&#xff0c;它是关东升老师历时8个月的呕心沥血所编著&#xff0c;全书600多页&#xff0c;此本书基于Swift 2.x&#xff0c;通过大量案例全面介绍苹果平台的应用开发。全书共分5 部分&#xff0c;包括Swift语法篇、Cocoa T…

python从小白到大牛百度云盘_Java从小白到大牛 (关东升著) 中文pdf+mobi版[36MB]

《Java从小白到大牛》是一本Java语言学习立体教程&#xff0c;读者群是零基础小白&#xff0c;通过本书的学习能够成为Java大牛。主要内容包括&#xff1a;Java语法基础、Java编码规范、数据类型、运算符、控制语句、数组、字符串、面向对象基础、继承与多态、抽象类与接口、枚…

SpringBoot 整合 Sharding-JDBC

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、sharding-jdbc简介二、使用步骤 1.新建项目、引入依赖2.代码实战总结 前言 SpringBoot 整合 Sharding-JDBC 提示&#xff1a;以下是本篇文章正文内容&…

关东升的iOS实战系列图书 《iOS实战:传感器卷(Swift版)》已经上市

&#xfeff;&#xfeff; 承蒙广大读者的厚爱我的 《iOS实战&#xff1a;传感器卷&#xff08;Swift版&#xff09;》京东上市了&#xff0c;欢迎广大读者提出宝贵意见。http://item.jd.com/11760248.html 欢迎关注关东升新浪微博tony_关东升。 关注智捷课堂微信公共平台&…

Java从小白到大牛第1篇 Java基础-关东升-专题视频课程

Java从小白到大牛第1篇 Java基础—3042人已学习 课程介绍 本视频是智捷课堂推出的一套“Java语言学习立体教程”的视频第一部分&#xff0c;读者以及观看群是初级小白&#xff0c;通过本视频的学习能够成为Java大牛。本主要内容包括&#xff1a;Java语法基础、Java编码规范…

Sharding-JDBC 基础

Sharding-JDBC 是当当网开源的适用于微服务的分布式数据访问基础类库&#xff0c;完整的实现了分库分表&#xff0c;读写分离和分布式主键功能&#xff0c;并初步实现了柔性事务。 从 2016 年开源至今&#xff0c;在经历了整体架构的数次精炼以及稳定性打磨后&#xff0c;如今…

python从小白到大牛pdf 下载 资源共享_Kotlin从小白到大牛 (关东升著) 中文pdf高清版[12MB]...

本书是一本Kotlin语言学习立体教程&#xff0c;主要内容包括&#xff1a;Kotlin语法基础、Kotlin编码规范、数据类型、字符串、运算符、程序流程控制、函数、面向对象基础、继承与多态、抽象类与接口、高阶函数、Lambda表达式、数组、集合、函数式编程API、异常处理、线程、协程…

Java从小白到大牛第4篇项目实战1——PetStore宠物商店-关东升-专题视频课程

Java从小白到大牛第4篇项目实战1——PetStore宠物商店—1764人已学习 课程介绍 PetStore是Sun&#xff08;现在Oracle&#xff09;公司为了演示自己的Java EE技术&#xff0c;而编写的一个基于Web宠物店项目。PetStore是典型的电子商务项目&#xff0c;是现在很多电商平台的…

Sharding-JDBC(二)- Sharding-JDBC介绍

文章目录 一、Sharding-JDBC介绍1. Sharding-JDBC介绍2. Sharding-JDBC与JDBC性能对比 二、Sharding-JDBC快速入门1. 需求说明2. 环境搭建2.1 环境说明2.2 创建数据库2.3 引入maven依赖 3. 编写程序3.1 分片规则配置3.2.数据操作3.3.测试 4. 流程分析5. 其他集成方式5.1 Spring…

2022年适合初学者的Python书籍推荐

一、前言 网上有很多Python书或者视频&#xff0c;种类繁多该怎么选择&#xff1f; 看书全是文字看就了眼睛累&#xff0c;也容易厌倦&#xff0c;看视频有时候又觉得讲的慢&#xff0c;有其他方案吗&#xff1f; 其实&#xff0c;关于自学python&#xff0c;找一本浅显易懂&…

师傅带徒弟学:Python游戏开发引擎cocos2d-python-关东升-专题视频课程

师傅带徒弟学&#xff1a;Python游戏开发引擎cocos2d-python—299人已学习 课程介绍 Python语言之所以受欢迎&#xff0c;很大的原因是有很多可以使用的库&#xff0c;Python社区也有很多游戏开发库&#xff0c;其中较为优秀有&#xff1a;Cocos2d、Pyglet和Pygame&#xf…

关东升的《从零开始学Swift》即将出版

大家好&#xff1a; 苹果2015WWDC大会发布了Swift2.0&#xff0c;它较之前的版本Swift1.x有很大的变化&#xff0c;所以我即将出版《从零开始学Swift》《从零开始学Swift》将在《Swift开发指南》第1版的基础上添加Swift2.0的内容&#xff0c;同时摒弃第1版的一些不合理的内容&a…

最新出炉!《看漫画学Python 2》电子版火爆来袭,300页全新版PDF开放下载,零基础小白入门首选!

很多刚开始接触Python的朋友都会有一个共同的烦恼&#xff0c;自学好无聊&#xff0c;好枯燥&#xff0c;不想坚持了……所以秉持着让学Python好玩有趣的态度&#xff0c;给大家推荐一本最新出炉的“漫画书”《看漫画学Python 2》&#xff01; 图书简介&#xff1a;Python是一门…

关东升的《iOS实战:图形图像、动画和多媒体卷(Swift版)》上市了

关东升的《iOS实战&#xff1a;图形图像、动画和多媒体卷&#xff08;Swift版&#xff09;》上市了 承蒙广大读者的厚爱我的《iOS实战&#xff1a;图形图像、动画和多媒体卷&#xff08;Swift版&#xff09;》京东上市了&#xff0c;欢迎广大读者提出宝贵意见。。http://item.j…