diff --git a/mybatis-multi-tenancy/src/main/java/com/iformall/plugin/shard/impl/rule/ShardingRuleDefaultService.java b/mybatis-multi-tenancy/src/main/java/com/iformall/plugin/shard/impl/rule/ShardingRuleDefaultService.java index f4a3eec00..7ee89d573 100644 --- a/mybatis-multi-tenancy/src/main/java/com/iformall/plugin/shard/impl/rule/ShardingRuleDefaultService.java +++ b/mybatis-multi-tenancy/src/main/java/com/iformall/plugin/shard/impl/rule/ShardingRuleDefaultService.java @@ -7,11 +7,26 @@ public class ShardingRuleDefaultService implements ShardingRuleService { if (null == value || count <= 0 ) { return null; } + int hash = 9999999; + //如果是整数,则直接变为Long,好查询 + if (value instanceof String) { + try { + Long lvalue = Long.parseLong((String)value); + hash = getHashCode(lvalue); + }catch(Exception e) { + hash = getHashCode(value); + } + }else { + hash = getHashCode(value); + } + return String.valueOf(hash%count); + } + + private int getHashCode(Object value) { int hash = value.hashCode(); if (hash < 0 ) { hash = Math.abs(hash); } - return String.valueOf(hash%count); + return hash; } - }