shardingsphere 集成springboot【水平分表】

创建sharding_sphere数据库

在数据库中创建两张表,t_order_1和t_order_2

分片规则:如果订单编号是偶数添加到t_order_1,如果是奇数添加到t_order_2

创建实体类

public class Order {  private Integer id;  private Integer orderType;  private Integer customerId;  private Double amount;  public Integer getId() {  return id;  }  public void setId(Integer id) {  this.id = id;  }  public Integer getOrderType() {  return orderType;  }  public void setOrderType(Integer orderType) {  this.orderType = orderType;  }  public Integer getCustomerId() {  return customerId;  }  public void setCustomerId(Integer customerId) {  this.customerId = customerId;  }  public Double getAmount() {  return amount;  }  public void setAmount(Double amount) {  this.amount = amount;  }  @Override  public String toString() {  return "Order{" +  "id=" + id +  ", orderType='" + orderType + '\'' +  ", customerId=" + customerId +  ", amount=" + amount +  '}';  }  
}

创建Mapper

@Repository  
@Mapper  
public interface OrderMapper {  @Insert("insert into t_order(order_type,customer_id,amount) values(#{orderType},#{customerId},#{amount})")  public void insert(Order orders);  @Select("select * from t_order where id = #{id}")  @Results({  @Result(property = "id",column = "id"),  @Result(property = "orderType",column = "order_type"),  @Result(property = "customerId",column = "customer_id"),  @Result(property = "amount",column = "amount")  })  public Order selectOne(Integer id);
}    

创建配置文件

spring:  shardingsphere:  datasource: #数据源配置  names: ds1  ds1: #数据源0  type: com.alibaba.druid.pool.DruidDataSource  driver-class-name: com.mysql.cj.jdbc.Driver  url: jdbc:mysql://localhost:3306/ds1?serverTimezone=UTC&useSSL=false  username: root  password: wsrbb  sharding:  tables:  t_order:  actual-data-nodes: ds1.t_order_${1..2}   #指定orders表的分布情况,配置表在哪个数据库中,表名称是什么  # 雪花算法  key-generator:  column: id  type: SNOWFLAKE  props:  worker-id: 123  max-vibration-offset: 3  ##指定分片策略。根据id的奇偶性来判断插入到哪个表  table-strategy:  inline:  sharding-column: id  algorithm-expression: t_order_${id % 2 +1}  #打开sql输出日志  props:  sql:  show: true

运行测试类即可

@Test  
public void addOrders(){  for (int i = 1; i <=10 ; i++) {  Order orders = new Order();  //orders.setId(i);  orders.setCustomerId(new Random().nextInt(10));  orders.setOrderType(i);  orders.setAmount(1000.0*i);  orderMapper.insert(orders);  }  
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/709410.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java+SpringBoot+Vue+MySQL:员工健康管理技术新组合

✍✍计算机毕业编程指导师 ⭐⭐个人介绍&#xff1a;自己非常喜欢研究技术问题&#xff01;专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目&#xff1a;有源码或者技术上的问题欢迎在评论区一起讨论交流&#xff01; ⚡⚡ Java、…

mysql字节长度限制报错处理方法

报错如下&#xff1a; ERROR 1118 (42000) at line 274: Row size too large (> 8126). Changing some columns to TEXT or BLOB may help. In current row format, BLOB pr efix of 0 bytes is stored inline 或者 ERROR 1118 (42000) at line 1240: Row size too large. T…

TCP的三次握手和四次挥手 | 查看网络状态

三次握手和四次挥手是在计算机网络中用于建立和终止TCP连接的协议。这两个过程是TCP协议的重要组成部分&#xff0c;确保数据的可靠传输。 三次握手指的是在客户端和服务器之间建立连接时的步骤。具体流程如下&#xff1a; 客户端向服务器发送一个连接请求报文段&#xff08;…

Git教程-Git的基本使用

Git是一个强大的分布式版本控制系统&#xff0c;它不仅用于跟踪代码的变化&#xff0c;还能够协调多个开发者之间的工作。在软件开发过程中&#xff0c;Git被广泛应用于协作开发、版本管理和代码追踪等方面。以下是一个详细的Git教程&#xff0c;我们将深入探讨Git的基本概念和…

React 模态框的设计(六)Draggable的整合

前一节课中漏了一个知识点&#xff0c;当内容很长时需要滚动&#xff0c;这个滚动条是很影响美观的。在MacOS下的还能忍&#xff0c;win系统下简直不能看。如何让长内容能滚动又不显示滚动条呢&#xff0c;我尝试过很多办法&#xff0c;最终下面这个方法目前来说是最完美的。我…

Mysql DATETIME与TIMESTAMP的区别

TIMESTAMP的取值范围小&#xff0c;并且TIMESTAMP类型的日期时间在存储时会将当前时区的日期时间值转换为时间标准时间值&#xff0c;检索时再转换回当前时区的日期时间值。 而DATETIME则只能反映出插入时当地的时区&#xff0c;其他时区的人查看数据必然会有误差的。 DATETI…

数据结构——lesson4带头双向循环链表实现

前言✨✨ &#x1f4a5;个人主页&#xff1a;大耳朵土土垚-CSDN博客 &#x1f4a5; 所属专栏&#xff1a;数据结构学习笔记​​​​​​ &#x1f4a5;双链表与单链表的区分&#xff1a;单链表介绍与实现 &#x1f4a5;对于malloc函数有疑问的:动态内存函数介绍 感谢大家的观看…

tomcat安装步骤流程

安装tomcat是基于安装java的基础上的 JAVA 举例说明&#xff1a; 关闭防火墙 下载java [rootlocalhost ~]#yum install java -y rootlocalhost ~]#yum install epel-release.noarch -y [rootlocalhost ~]#yum provides */javac [rootlocalhost data]#yum install java-1.8.0-o…

半监督学习理解

半监督 少量有标注&#xff0c;大量无标注 1.三个假设&#xff1a; (1)连续性/平滑性假设&#xff1a;相近的数据点可能有相同的标签 (2)集群假设&#xff1a;在分类问题中&#xff0c;数据往往被组织成高密度的集群&#xff0c;同一集群的数据点可能具有相同的标签。因此&…

C/C++常见的字符串操作函数

2 字符串操作 ​ 由双引号&#xff08;Double Quote&#xff09;引起来的一串字符称为字符串字面值&#xff08;String Literal&#xff09;&#xff0c;或者简称字符串。注&#xff1a;字符串的结束标志是一个 \0 的转义字符。在计算字符串长度的时候 \0 是结束标志&#xff…

6.1 deeplabv3+的pth模型转换为rknn模型

和yolov5的pth模型转换为rknn模型类似&#xff0c;deeplabv3的pth模型转为rknn模型的步骤是&#xff1a; pth------>onnx-------->rknn 1.pth转为onnx 代码如下&#xff1a; #!/usr/bin/env python3 # -*- coding: utf-8 -*- # by [jackhanyuan](https://github.com/…

实现一个线程安全的单例模式

单例模式 单例模式能保证某个类在程序中只存在唯⼀⼀份实例,⽽不会创建出多个实例 某个类,在一个类,只应该创建出一个实例,使用单例模式,就可以对咱们的代码进行一个更严格的校验和检查 单例模式具体的实现⽅式有很多.最常⻅的是"饿汉"和"懒汉"两种单例…

Linux之定时任务01

简介 Linux定时任务是一种可执行的命令或者脚本,在特定的时间或者时间间隔下自动执行。通过在系统中预设一些需要执行的任务,可以让Linux定时任务自动执行并完成这些任务。定时任务可以用于自动备份、系统清理、监控、自动化维护等任务。 一、apache服务器监控 [rootlocalhost…

代码随想录算法训练营day27

题目&#xff1a;93.复原IP地址、78.子集、90.子集II 参考链接&#xff1a;代码随想录 93.复原IP地址 思路&#xff1a;本题的思路和上题切割回文串类似&#xff0c;也是先要写一个判断函数&#xff0c;然后一个个切割。对返回条件&#xff0c;如果路径长度已经为4&#xff…

DevEco Studio下载与安装(Windows)

下载地址&#xff1a; HUAWEI DevEco Studio和SDK下载和升级 | HarmonyOS开发者 安装时直接点击 next 即可。 运⾏已安装的DevEco Studio&#xff0c;⾸次使⽤&#xff0c;请选择Do not import settings&#xff0c;单击OK。 1.安装Node.js 如果本地有下载&#xff0c;可以…

前端JS 时间复杂度和空间复杂度

时间复杂度 BigO 算法的时间复杂度通常用大 O 符号表述&#xff0c;定义为 T(n) O(f(n)) 实际就是计算当一个一个问题量级&#xff08;n&#xff09;增加的时候&#xff0c;时间T增加的一个趋势 T(n)&#xff1a;时间的复杂度&#xff0c;也就相当于所消耗的时长 O&#xff1…

乐吾乐Web可视化RTSP播放

背景 乐吾乐致力于物联网和智能制造等场景的Web可视化平台和解决方案&#xff0c;其中摄像头播放必不可少。 当前国内摄像头都以RTSP协议为主&#xff0c;而HTML不能直接读取RTSP协议&#xff0c;因此需要一个转流服务。乐吾乐Web可视化播放RTSP也是如此&#xff1a; RTSP协…

ArcGIS专用语言:Arcade详细介绍(一)

Arcade语言是专为在ArcGIS中使用而设计的。是一种可移植、轻量级且安全的表达语言&#xff0c;用于在ArcGIS应用程序中创建自定义内容。 与其他表达式语言一样&#xff0c;它可以执行数学计算、设置文本格式和计算逻辑语句&#xff0c;还支持多语句表达式、变量和流控制语句。…

理解计算着色器中glsl语言的内置变量

概要 本文通过示例的方式&#xff0c;着重解释以下几个内置变量&#xff1a; gl_WorkGroupSizegl_NumWorkGroupsgl_LocalInvocationIDgl_WorkGroupIDgl_GlobalInvocationID 基本概念 局部工作组与工作项 一个3x2x1的局部工作组示例如下&#xff0c;每个小篮格子表示一个工作项…

Vulnhub靶机:basic_pentesting_1

一、介绍 运行环境&#xff1a;Virtualbox 攻击机&#xff1a;kali&#xff08;10.0.2.4&#xff09; 靶机&#xff1a;basic_pentesting_1&#xff08;10.0.2.6&#xff09; 目标&#xff1a;获取靶机root权限和flag 靶机下载地址&#xff1a;https://www.vulnhub.com/en…