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