Sharding-JDBC-自定義主鍵生成器

官方文檔分佈式主鍵

sharding-jdbc提供了兩種主鍵生成策略UUID、SNOWFLAKE ,默認使用SNOWFLAKE,
還抽離出分佈式主鍵生成器的接口org.apache.shardingsphere.spi.keygen.ShardingKeyGenerator,方便用戶自行實現自定義的自增主鍵生成器。

1.自定義實現ShardingKeyGenerator

public class SimpleShardingKeyGenerator implements ShardingKeyGenerator {

    private AtomicLong atomic = new AtomicLong(0);
    @Getter
    @Setter
    private Properties properties = new Properties();

    @Override
    public Comparable<?> generateKey() {
        return atomic.incrementAndGet();
    }

    @Override
    public String getType() {
    	//聲明類型
        return "SIMPLE";
    }
}

這裏僅爲了說明如何配置使用自定義主鍵生成器,簡單使用AtomicLong實現

2.配置分片策略

spring:
  shardingsphere:
    datasource: ## 略......
    sharding:
      tables:
        t_order:
          ## 指定 t_order表的 數據分佈情況,配置數據節點
          actual-data-nodes: m1.t_order_$->{1..2}
          ## 指定t_order表的主鍵列,以及主鍵生成策略爲SNOWFLAKE
          key-generator:
            column: order_id
            ## 指定分片策略類型
            type: SIMPLE
          ## 指定t_order的分片策略: 設置分片鍵和分片算法
          table-strategy:
            inline:
              sharding-column: order_id
              ## 根據order_id % 2 + 1 的結果,指定t_order的實際表
              algorithm-expression: t_order_$->{order_id % 2 +1}

指定spring.shardingsphere.datasource.sharding.tables.<tablename>.key-generator.type=SIMPLE

3.SPI接口配置
添加如下文件META-INF/services/org.apache.shardingsphere.spi.keygen.ShardingKeyGenerator,文件內容爲:your_package_name.SimpleShardingKeyGenerator.
在這裏插入圖片描述

4.測試
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章