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

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.lryc.cn/news/308424.html

相关文章:

  • GO 的 Web 开发系列(六)—— 遍历路径下的文件
  • Flutter 处理异步操作并根据异步操作状态动态构建界面的方法FutureBuilder
  • Git教程-Git的基本使用
  • Java解决长度为K子的数组中的的最大和
  • 【手机端测试】adb基础命令
  • 【数据结构】深入探讨二叉树的遍历和分治思想(一)
  • jQuery AJAX get() 和 post() 方法—— W3school 详解 简单易懂(二十四)
  • Linux中如何进行LVM逻辑卷扩容?
  • 现代企业架构框架——应用架构
  • 期货开户保证金保障市场正常运转
  • WebGIS----wenpack
  • 【Maven】Maven 基础教程(二):Maven 的使用
  • mirthConnect忽略HTTPS SSL验证
  • libvirt命名空间xmlns:qemu的使用
  • ywtool check命令及ywtool clean命令
  • java009 - Java面向对象基础
  • MWC 2024 | 广和通携手意法半导体发布智慧家居解决方案
  • threejs 大场景下,对小模型进行贴图处理
  • 云畅科技携手飞腾打造智慧园区信创低代码综合解决方案
  • Dell R730 2U服务器实践1:开机管理
  • 『大模型笔记』Sora:探索大型视觉模型的前世今生、技术内核及未来趋势
  • python中的字符串处理
  • java之servlet
  • 重推请求之curl和fiddler
  • 基于redis实现【最热搜索】和【最近搜索】功能
  • 1.2 debug的六种指令的使用,四个通用寄存器
  • C# OpenVINO Crack Seg 裂缝分割 裂缝检测
  • 前后端项目-part03
  • Java 1.8 docker 镜像制作
  • python中自定义报错