diff --git a/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/routing/router/ParsingSQLRouter.java b/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/routing/router/ParsingSQLRouter.java index 28bcf901948bb909fb099765899588627ba7c92c..137052046dbbe8c0406ccba7b1bf8220a5c923ee 100644 --- a/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/routing/router/ParsingSQLRouter.java +++ b/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/routing/router/ParsingSQLRouter.java @@ -106,13 +106,13 @@ public final class ParsingSQLRouter implements SQLRouter { private RoutingResult route(final List parameters, final SQLStatement sqlStatement) { Collection tableNames = sqlStatement.getTables().getTableNames(); if (1 == tableNames.size()) { - return new SingleTableRouter(shardingRule, parameters, tableNames.iterator().next(), sqlStatement, sqlStatement.getType()).route(); + return new SingleTableRouter(shardingRule, parameters, tableNames.iterator().next(), sqlStatement).route(); } if (shardingRule.isAllBindingTables(tableNames)) { - return new BindingTablesRouter(shardingRule, parameters, tableNames, sqlStatement, sqlStatement.getType()).route(); + return new BindingTablesRouter(shardingRule, parameters, tableNames, sqlStatement).route(); } // TODO 可配置是否执行笛卡尔积 - return new MixedTablesRouter(shardingRule, parameters, tableNames, sqlStatement, sqlStatement.getType()).route(); + return new MixedTablesRouter(shardingRule, parameters, tableNames, sqlStatement).route(); } private void logSQLRouteResult(final SQLRouteResult routeResult, final List parameters) { diff --git a/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/routing/type/binding/BindingTablesRouter.java b/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/routing/type/binding/BindingTablesRouter.java index fb37562e5faf26955eb02d9d8bddfc4660516d1d..e7ba01be361fe2cabd6d5320d706180ba69e7e7b 100644 --- a/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/routing/type/binding/BindingTablesRouter.java +++ b/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/routing/type/binding/BindingTablesRouter.java @@ -19,7 +19,6 @@ package com.dangdang.ddframe.rdb.sharding.routing.type.binding; import com.dangdang.ddframe.rdb.sharding.api.rule.BindingTableRule; import com.dangdang.ddframe.rdb.sharding.api.rule.ShardingRule; -import com.dangdang.ddframe.rdb.sharding.constant.SQLType; import com.dangdang.ddframe.rdb.sharding.parsing.parser.statement.SQLStatement; import com.dangdang.ddframe.rdb.sharding.routing.type.single.SingleTableRouter; import com.google.common.base.Optional; @@ -47,14 +46,11 @@ public final class BindingTablesRouter { private final BindingTableRule bindingTableRule; - private final SQLType sqlType; - - public BindingTablesRouter(final ShardingRule shardingRule, final List parameters, final Collection logicTables, final SQLStatement sqlStatement, final SQLType sqlType) { + public BindingTablesRouter(final ShardingRule shardingRule, final List parameters, final Collection logicTables, final SQLStatement sqlStatement) { this.shardingRule = shardingRule; this.parameters = parameters; this.logicTables = logicTables; this.sqlStatement = sqlStatement; - this.sqlType = sqlType; Optional optionalBindingTableRule = shardingRule.findBindingTableRule(logicTables.iterator().next()); Preconditions.checkState(optionalBindingTableRule.isPresent()); bindingTableRule = optionalBindingTableRule.get(); @@ -69,7 +65,7 @@ public final class BindingTablesRouter { BindingRoutingResult result = null; for (final String each : logicTables) { if (null == result) { - result = new BindingRoutingResult(new SingleTableRouter(shardingRule, parameters, each, sqlStatement, sqlType).route()); + result = new BindingRoutingResult(new SingleTableRouter(shardingRule, parameters, each, sqlStatement).route()); } else { result.bind(bindingTableRule, each); } diff --git a/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/routing/type/mixed/MixedTablesRouter.java b/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/routing/type/mixed/MixedTablesRouter.java index 6a2825b226c642ee08e362005d5528753960cfcb..8e3491f156daa18334897477d29f29f7d3ae1027 100644 --- a/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/routing/type/mixed/MixedTablesRouter.java +++ b/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/routing/type/mixed/MixedTablesRouter.java @@ -18,7 +18,6 @@ package com.dangdang.ddframe.rdb.sharding.routing.type.mixed; import com.dangdang.ddframe.rdb.sharding.api.rule.ShardingRule; -import com.dangdang.ddframe.rdb.sharding.constant.SQLType; import com.dangdang.ddframe.rdb.sharding.parsing.parser.statement.SQLStatement; import com.dangdang.ddframe.rdb.sharding.routing.RoutingResult; import com.dangdang.ddframe.rdb.sharding.routing.type.binding.BindingTablesRouter; @@ -49,8 +48,6 @@ public final class MixedTablesRouter { private final SQLStatement sqlStatement; - private final SQLType sqlType; - /** * 路由. * @@ -62,11 +59,11 @@ public final class MixedTablesRouter { Collection remainingTables = new ArrayList<>(logicTables); Collection result = new ArrayList<>(logicTables.size()); if (1 < bindingTables.size()) { - result.add(new BindingTablesRouter(shardingRule, parameters, bindingTables, sqlStatement, sqlType).route()); + result.add(new BindingTablesRouter(shardingRule, parameters, bindingTables, sqlStatement).route()); remainingTables.removeAll(bindingTables); } for (String each : remainingTables) { - SingleRoutingResult routingResult = new SingleTableRouter(shardingRule, parameters, each, sqlStatement, sqlType).route(); + SingleRoutingResult routingResult = new SingleTableRouter(shardingRule, parameters, each, sqlStatement).route(); if (null != routingResult) { result.add(routingResult); } diff --git a/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/routing/type/single/SingleTableRouter.java b/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/routing/type/single/SingleTableRouter.java index a05c3b16973b868c5ad670a7333ac1872d167eaa..7d8d349bd2caa8d1cf2e8121fc14a1f4c037187f 100644 --- a/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/routing/type/single/SingleTableRouter.java +++ b/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/routing/type/single/SingleTableRouter.java @@ -26,7 +26,6 @@ import com.dangdang.ddframe.rdb.sharding.api.strategy.database.DatabaseShardingS import com.dangdang.ddframe.rdb.sharding.api.strategy.database.NoneDatabaseShardingAlgorithm; import com.dangdang.ddframe.rdb.sharding.api.strategy.table.NoneTableShardingAlgorithm; import com.dangdang.ddframe.rdb.sharding.api.strategy.table.TableShardingStrategy; -import com.dangdang.ddframe.rdb.sharding.constant.SQLType; import com.dangdang.ddframe.rdb.sharding.hint.HintManagerHolder; import com.dangdang.ddframe.rdb.sharding.hint.ShardingKey; import com.dangdang.ddframe.rdb.sharding.parsing.parser.context.Column; @@ -63,14 +62,11 @@ public final class SingleTableRouter { private final TableRule tableRule; - private final SQLType sqlType; - - public SingleTableRouter(final ShardingRule shardingRule, final List parameters, final String logicTable, final SQLStatement sqlStatement, final SQLType sqlType) { + public SingleTableRouter(final ShardingRule shardingRule, final List parameters, final String logicTable, final SQLStatement sqlStatement) { this.shardingRule = shardingRule; this.parameters = parameters; this.logicTable = logicTable; this.sqlStatement = sqlStatement; - this.sqlType = sqlType; Optional tableRuleOptional = shardingRule.tryFindTableRule(logicTable); if (tableRuleOptional.isPresent()) { tableRule = tableRuleOptional.get(); @@ -110,7 +106,7 @@ public final class SingleTableRouter { shardingValues = getShardingValues(strategy.getShardingColumns()); } logBeforeRoute("database", logicTable, tableRule.getActualDatasourceNames(), strategy.getShardingColumns(), shardingValues); - Collection result = new HashSet<>(strategy.doStaticSharding(sqlType, tableRule.getActualDatasourceNames(), shardingValues)); + Collection result = new HashSet<>(strategy.doStaticSharding(sqlStatement.getType(), tableRule.getActualDatasourceNames(), shardingValues)); logAfterRoute("database", logicTable, result); Preconditions.checkState(!result.isEmpty(), "no database route info"); return result; @@ -129,7 +125,7 @@ public final class SingleTableRouter { if (tableRule.isDynamic()) { result = new HashSet<>(strategy.doDynamicSharding(shardingValues)); } else { - result = new HashSet<>(strategy.doStaticSharding(sqlType, tableRule.getActualTableNames(routedDataSources), shardingValues)); + result = new HashSet<>(strategy.doStaticSharding(sqlStatement.getType(), tableRule.getActualTableNames(routedDataSources), shardingValues)); } logAfterRoute("table", logicTable, result); Preconditions.checkState(!result.isEmpty(), "no table route info");