赞
踩
创建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);
}
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。