当前位置: 首页 > news >正文

springboot集成shardingsphere-分库分表

  1. 导入maven依赖,如下
        <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope><exclusions><exclusion><groupId>org.junit.vintage</groupId><artifactId>junit-vintage-engine</artifactId></exclusion></exclusions></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId></dependency><!-- https://mvnrepository.com/artifact/org.apache.shardingsphere/shardingsphere-jdbc-core-spring-boot-starter --><dependency><groupId>org.apache.shardingsphere</groupId><artifactId>sharding-jdbc-spring-boot-starter</artifactId><version>4.1.1</version></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.11</version></dependency><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.1.1</version></dependency>
  1. 新建实体表
    在这里插入图片描述
    这个表只有两个字段,其中id不要弄成自增长的。
    总共有四张表,存于两个数据库中,如下展示:
    在这里插入图片描述
    在这里插入图片描述
    这样子就形成了对course进行分库分表了,两个数据库源,每个数据库源有两张表。

  2. 配置yml文件

spring:application:name: shardingdemoshardingsphere:datasource:names: master1, master2master1:type: com.zaxxer.hikari.HikariDataSourcedriver-class-name: com.mysql.cj.jdbc.Driverjdbc-url: jdbc:mysql://xxxxxx:3306/mybatis?useUnicode=true&characterEncoding=utf8&verifyServerCertificate=false&useSSL=trueusername: xxxxpassword: xxxxmaster2:type: com.zaxxer.hikari.HikariDataSourcedriver-class-name: com.mysql.cj.jdbc.Driverjdbc-url: jdbc:mysql://xxxx:3306/db2019?useUnicode=true&characterEncoding=utf8&verifyServerCertificate=false&useSSL=trueusername: xxxxpassword: xxxxx
# 配置虚拟表映射sharding:tables:course:actualDataNodes: master$->{1..2}.course_$->{1..2}databaseStrategy:inline:shardingColumn: idalgorithmExpression: master$->{id%2+1}tableStrategy:inline:shardingColumn: idalgorithmExpression: course_$->{id%2+1}keyGenerator:column: idtype: SNOWFLAKEprops:worker:id: 1props:sql.show: true

其中新建了两个数据源,master1映射mybatis这个数据库,而master2映射db2019这个数据库。最后根据id的取模运算,得出,插入的新数据往哪个数据库的哪个表插入。

  1. 进行数据库操作
    @Autowiredprivate CourseMapper courseMapper;@Testpublic void insertDatabaseAndTableShardingTest() {for (int i = 0; i < 20; i++) {Course course = new Course();course.setName("分库分表插入" + i);courseMapper.insert(course);}}

此时去到数据库中就可以看见插入的数据库了,虽然有些表没有数据,只是在测试的时候,插入的数据量不够引起的。

相关文章:

  • nlp学习笔记
  • MyBatis 参数传递详解
  • Java中的JVM是什么?如何调优JVM的性能?
  • Android采用Scroller实现底部二楼效果
  • ndk-build
  • JS读取目录下的所有图片/require动态加载图片/文字高亮
  • MySQL-连接查询
  • 正则表达式规则以及贪婪匹配与非贪婪匹配详解
  • HTML5的未来:掌握最新技术,打造炫酷网页体验
  • 易灸灸的微商模式,新零售全案运营,裂变营销与代理模式
  • 【LinkedList与链表】
  • 基于单片机的太阳能无线 LED 灯设计
  • 2024FIC决赛
  • web安全渗透测试十大常规项(一):web渗透测试之XML和XXE外部实体注入
  • 赛氪网受邀参加上海闵行区翻译协会年会,共探科技翻译创新之路
  • 《深入 React 技术栈》
  • 【EOS】Cleos基础
  • Brief introduction of how to 'Call, Apply and Bind'
  • CSS3 变换
  • css布局,左右固定中间自适应实现
  • ES6 ...操作符
  • ES6之路之模块详解
  • Linux后台研发超实用命令总结
  • mockjs让前端开发独立于后端
  • MySQL Access denied for user 'root'@'localhost' 解决方法
  • ng6--错误信息小结(持续更新)
  • Python中eval与exec的使用及区别
  • RxJS 实现摩斯密码(Morse) 【内附脑图】
  • Spring Cloud Alibaba迁移指南(一):一行代码从 Hystrix 迁移到 Sentinel
  • springboot_database项目介绍
  • Vue小说阅读器(仿追书神器)
  • web标准化(下)
  • 创建一种深思熟虑的文化
  • 大快搜索数据爬虫技术实例安装教学篇
  • 多线程事务回滚
  • 分布式熔断降级平台aegis
  • 和 || 运算
  • 解析带emoji和链接的聊天系统消息
  • 区块链分支循环
  • 什么软件可以提取视频中的音频制作成手机铃声
  • 使用docker-compose进行多节点部署
  • 小试R空间处理新库sf
  • #stm32驱动外设模块总结w5500模块
  • #快捷键# 大学四年我常用的软件快捷键大全,教你成为电脑高手!!
  • #我与Java虚拟机的故事#连载03:面试过的百度,滴滴,快手都问了这些问题
  • ( 10 )MySQL中的外键
  • (TipsTricks)用客户端模板精简JavaScript代码
  • (二)基于wpr_simulation 的Ros机器人运动控制,gazebo仿真
  • (分布式缓存)Redis持久化
  • (附源码)spring boot北京冬奥会志愿者报名系统 毕业设计 150947
  • (附源码)springboot车辆管理系统 毕业设计 031034
  • (正则)提取页面里的img标签
  • (转)C#调用WebService 基础
  • .net mvc 获取url中controller和action
  • .NET 中的轻量级线程安全