| @@ -7,11 +7,26 @@ public class ShardingRuleDefaultService implements ShardingRuleService { | |||||
| if (null == value || count <= 0 ) { | if (null == value || count <= 0 ) { | ||||
| return null; | 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(); | int hash = value.hashCode(); | ||||
| if (hash < 0 ) { | if (hash < 0 ) { | ||||
| hash = Math.abs(hash); | hash = Math.abs(hash); | ||||
| } | } | ||||
| return String.valueOf(hash%count); | |||||
| return hash; | |||||
| } | } | ||||
| } | } | ||||