
org.xson.tangyuan.sharding.ModShardingHandler Maven / Gradle / Ivy
package org.xson.tangyuan.sharding;
import org.xson.tangyuan.ognl.vars.Variable;
public class ModShardingHandler extends AbstractShardingHandler {
@Override
public ShardingResult selectDataSourceAndTable(ShardingDefVo defVo, ShardingArgVo argVo, Object arg) {
Variable[] keywords = argVo.getKeywords();
if (null == keywords) {
keywords = defVo.getKeywords();
}
long value = getValue(keywords[0].getValue(arg));
if (value < 0) {
throw new ShardingException("分库分表对象值非法: " + value);
}
//
long tableIndex = value % defVo.getTableCount();
long dbIndex = value % defVo.getDbCount();
if (defVo.isTableNameIndexIncrement()) {
tableIndex = tableIndex + (dbIndex * defVo.getTableCount());
}
return getResult(tableIndex, dbIndex, defVo, argVo);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy