From d096953776519f10cf99e73b9d019a3c4aa5cabe Mon Sep 17 00:00:00 2001
From: luliqiang <kidgrow>
Date: Wed, 24 Mar 2021 19:07:50 +0800
Subject: [PATCH] 1、完善哈希表后缀生成方法 2、增加哈希表后缀生成工具类(只传入字符串参数,其他参数用方法中的默认值)

---
 kidgrow-commons/kidgrow-db-spring-boot-starter/src/main/java/com/kidgrow/db/sharding/HashModTableSuffix.java |   19 +++++++++++++++----
 1 files changed, 15 insertions(+), 4 deletions(-)

diff --git a/kidgrow-commons/kidgrow-db-spring-boot-starter/src/main/java/com/kidgrow/db/sharding/HashModTableSuffix.java b/kidgrow-commons/kidgrow-db-spring-boot-starter/src/main/java/com/kidgrow/db/sharding/HashModTableSuffix.java
index 7304b90..f9686b1 100644
--- a/kidgrow-commons/kidgrow-db-spring-boot-starter/src/main/java/com/kidgrow/db/sharding/HashModTableSuffix.java
+++ b/kidgrow-commons/kidgrow-db-spring-boot-starter/src/main/java/com/kidgrow/db/sharding/HashModTableSuffix.java
@@ -13,17 +13,28 @@
 public class HashModTableSuffix implements TableSuffix {
 
     private String hash;
-    private static final int MOD = 100;
+    private Long tableSize = 128L;
+    private String tableSuffix="_000";
 
-    public HashModTableSuffix(String hash) {
+    public HashModTableSuffix(String hash,long tableSize, String tableSuffix) {
         if (StringUtils.isEmpty(hash)) {
             throw new IllegalArgumentException("hash should not be null or empty");
+        } else {
+            this.hash = hash;
         }
-        this.hash = hash;
+        if (tableSize != 0) {
+            this.tableSize = tableSize;
+        }
+        if (!StringUtils.isEmpty(tableSuffix)) {
+            this.tableSuffix=tableSuffix;
+        }
+
     }
 
     @Override
     public String getSuffix() {
-        return String.format("_%d", hash.hashCode() / MOD);
+        String format = "%0" + (tableSuffix.length() - 1) + "d";
+        return tableSuffix.substring(0,1)+String.format(format, Math.abs(hash.hashCode()) % tableSize);
     }
+
 }

--
Gitblit v1.8.0