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