From 6bff2c142a68dcaaab1cffc73070f67fecfac60a Mon Sep 17 00:00:00 2001
From: 克 刘 <4345453@qq.com>
Date: Fri, 27 Mar 2020 10:54:50 +0800
Subject: [PATCH] 动态表名获取优化

---
 kidgrow-commons/kidgrow-db-spring-boot-starter/src/main/java/com/kidgrow/db/sharding/HashModTableSuffix.java |   10 +++++++---
 kidgrow-demo/kidgrow-demo-order/src/test/java/com/kidgrow/order/mapper/OrderInfoMapperTest.java              |   31 ++++++++++++++++++++-----------
 kidgrow-commons/kidgrow-db-spring-boot-starter/src/main/java/com/kidgrow/db/sharding/TableSuffix.java        |    4 ++--
 3 files changed, 29 insertions(+), 16 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..14a5d3d 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,21 @@
 public class HashModTableSuffix implements TableSuffix {
 
     private String hash;
-    private static final int MOD = 100;
+    private Long tableSize = 64L;
+    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");
         }
         this.hash = hash;
+        this.tableSize=tableSize;
+        this.tableSuffix=tableSuffix;
     }
 
     @Override
     public String getSuffix() {
-        return String.format("_%d", hash.hashCode() / MOD);
+        String format = "%0" + (tableSuffix.length() - 1) + "d";
+        return "_"+String.format(format, Math.abs(hash.hashCode()) % tableSize);
     }
 }
diff --git a/kidgrow-commons/kidgrow-db-spring-boot-starter/src/main/java/com/kidgrow/db/sharding/TableSuffix.java b/kidgrow-commons/kidgrow-db-spring-boot-starter/src/main/java/com/kidgrow/db/sharding/TableSuffix.java
index b6f4c0f..216ce89 100644
--- a/kidgrow-commons/kidgrow-db-spring-boot-starter/src/main/java/com/kidgrow/db/sharding/TableSuffix.java
+++ b/kidgrow-commons/kidgrow-db-spring-boot-starter/src/main/java/com/kidgrow/db/sharding/TableSuffix.java
@@ -12,8 +12,8 @@
  */
 public interface TableSuffix {
 
-    static TableSuffix ofHash(String hash) {
-        return new HashModTableSuffix(hash);
+    static TableSuffix ofHash(String hash,long tableSize, String tableSuffix) {
+        return new HashModTableSuffix(hash,tableSize,tableSuffix);
     }
 
     static TableSuffix ofMonth(Date date) {
diff --git a/kidgrow-demo/kidgrow-demo-order/src/test/java/com/kidgrow/order/mapper/OrderInfoMapperTest.java b/kidgrow-demo/kidgrow-demo-order/src/test/java/com/kidgrow/order/mapper/OrderInfoMapperTest.java
index 7888100..3ed0936 100644
--- a/kidgrow-demo/kidgrow-demo-order/src/test/java/com/kidgrow/order/mapper/OrderInfoMapperTest.java
+++ b/kidgrow-demo/kidgrow-demo-order/src/test/java/com/kidgrow/order/mapper/OrderInfoMapperTest.java
@@ -2,6 +2,7 @@
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.kidgrow.common.context.DynamicTableContextHolder;
+import com.kidgrow.db.sharding.TableSuffix;
 import com.kidgrow.order.entity.OrderInfo;
 import com.kidgrow.order.service.IOrderDetailService;
 import org.junit.Test;
@@ -30,9 +31,9 @@
     private IOrderDetailService orderDetailService;
 
     @Test
-    public void getOrderInfo(){
+    public void getOrderInfo() {
 
-        OrderInfo orderInfo= orderInfoMapper.selectById("111");
+        OrderInfo orderInfo = orderInfoMapper.selectById("111");
 
         System.out.println(orderInfo);
 
@@ -40,9 +41,9 @@
 
 
     @Test
-    public void orderInfoSelectList(){
-        List<OrderInfo> list= orderInfoMapper.selectList(new QueryWrapper<OrderInfo>()
-                .eq("order_id","111"));
+    public void orderInfoSelectList() {
+        List<OrderInfo> list = orderInfoMapper.selectList(new QueryWrapper<OrderInfo>()
+                .eq("order_id", "111"));
 
         System.out.println(list);
 
@@ -52,16 +53,24 @@
     }
 
     @Test
-    public void orderDetail(){
-        Map<String, Object> params=null;
-        params.put("page",1);
-        params.put("limit",10);
+    public void orderDetail() {
+        Map<String, Object> params = null;
+        params.put("page", 1);
+        params.put("limit", 10);
         DynamicTableContextHolder.setDynamicTable("order_detail_2020");
         DynamicTableContextHolder.setDynamicTable("order_info_2020");
-        orderDetailService.findList(params,"");
+        orderDetailService.findList(params, "");
 
-        System.out.println(orderDetailService.findList(params,""));
+        System.out.println(orderDetailService.findList(params, ""));
 
 
     }
+
+
+
+    @Test
+    public void hashTest() {
+        String tableTag = TableSuffix.ofHash("1236847735607631873",64,"-000").getSuffix();
+        System.out.println(tableTag);
+    }
 }
\ No newline at end of file

--
Gitblit v1.8.0