提交 0f3d562b 编写于 作者: T terrymanu

refactor api 2nd version

上级 622ecace
......@@ -74,8 +74,8 @@ Sharding-JDBC is a JDBC extension, provides distributed features such as shardin
ShardingRule shardingRule = ShardingRule.builder()
.dataSourceRule(dataSourceRule)
.tableRules(tableRuleList)
.databaseShardingStrategy(new DatabaseShardingStrategy("sharding_column", new XXXShardingAlgorithm()))
.tableShardingStrategy(new TableShardingStrategy("sharding_column", new XXXShardingAlgorithm())))
.defaultDatabaseShardingStrategy(new StandardShardingStrategy("sharding_column", new XXXShardingAlgorithm()))
.defaultTableShardingStrategy(new StandardShardingStrategy("sharding_column", new XXXShardingAlgorithm())))
.build();
```
......
......@@ -72,8 +72,8 @@ Sharding-JDBC的分库分表通过规则配置描述,请简单浏览配置全
ShardingRule shardingRule = ShardingRule.builder()
.dataSourceRule(dataSourceRule)
.tableRules(tableRuleList)
.databaseShardingStrategy(new DatabaseShardingStrategy("sharding_column", new XXXShardingAlgorithm()))
.tableShardingStrategy(new TableShardingStrategy("sharding_column", new XXXShardingAlgorithm())))
.defaultDatabaseShardingStrategy(new StandardShardingStrategy("sharding_column", new XXXShardingAlgorithm()))
.defaultTableShardingStrategy(new StandardShardingStrategy("sharding_column", new XXXShardingAlgorithm())))
.build();
```
......
......@@ -135,10 +135,10 @@ public final class ShardingRuleBuilderTest {
assertTrue(bindingTableRule.hasLogicTable("t_order"));
assertTrue(bindingTableRule.hasLogicTable("t_order_item"));
assertFalse(bindingTableRule.hasLogicTable("t_log"));
assertThat(actual.getDatabaseShardingStrategy().getShardingColumns().size(), is(1));
assertThat(actual.getDatabaseShardingStrategy().getShardingColumns().iterator().next(), is("usr_id"));
assertThat(actual.getTableShardingStrategy().getShardingColumns().size(), is(1));
assertThat(actual.getTableShardingStrategy().getShardingColumns().iterator().next(), is("oid"));
assertThat(actual.getDefaultDatabaseShardingStrategy().getShardingColumns().size(), is(1));
assertThat(actual.getDefaultDatabaseShardingStrategy().getShardingColumns().iterator().next(), is("usr_id"));
assertThat(actual.getDefaultTableShardingStrategy().getShardingColumns().size(), is(1));
assertThat(actual.getDefaultTableShardingStrategy().getShardingColumns().iterator().next(), is("oid"));
}
private Map<String, DataSource> createDataSourceMap() {
......
......@@ -51,12 +51,12 @@ public final class ShardingRule {
private final Collection<BindingTableRule> bindingTableRules;
private final ShardingStrategy databaseShardingStrategy;
private final ShardingStrategy defaultDatabaseShardingStrategy;
private final ShardingStrategy tableShardingStrategy;
private final ShardingStrategy defaultTableShardingStrategy;
@Getter(AccessLevel.NONE)
private final KeyGenerator keyGenerator;
private final KeyGenerator defaultKeyGenerator;
/**
* Constructs a full properties sharding rule.
......@@ -67,21 +67,21 @@ public final class ShardingRule {
* @param dataSourceRule data source rule
* @param tableRules table rules
* @param bindingTableRules binding table rules
* @param databaseShardingStrategy default database sharding strategy
* @param tableShardingStrategy default table sharding strategy
* @param keyGenerator primary key generator
* @param defaultDatabaseShardingStrategy default database sharding strategy
* @param defaultTableShardingStrategy default table sharding strategy
* @param defaultKeyGenerator default primary key generator
*/
@Deprecated
public ShardingRule(
final DataSourceRule dataSourceRule, final Collection<TableRule> tableRules, final Collection<BindingTableRule> bindingTableRules,
final ShardingStrategy databaseShardingStrategy, final ShardingStrategy tableShardingStrategy, final KeyGenerator keyGenerator) {
final DataSourceRule dataSourceRule, final Collection<TableRule> tableRules, final Collection<BindingTableRule> bindingTableRules,
final ShardingStrategy defaultDatabaseShardingStrategy, final ShardingStrategy defaultTableShardingStrategy, final KeyGenerator defaultKeyGenerator) {
Preconditions.checkNotNull(dataSourceRule);
this.dataSourceRule = dataSourceRule;
this.tableRules = null == tableRules ? Collections.<TableRule>emptyList() : tableRules;
this.bindingTableRules = null == bindingTableRules ? Collections.<BindingTableRule>emptyList() : bindingTableRules;
this.databaseShardingStrategy = null == databaseShardingStrategy ? new NoneShardingStrategy() : databaseShardingStrategy;
this.tableShardingStrategy = null == tableShardingStrategy ? new NoneShardingStrategy() : tableShardingStrategy;
this.keyGenerator = null == keyGenerator ? KeyGeneratorFactory.createKeyGenerator(DefaultKeyGenerator.class) : keyGenerator;
this.defaultDatabaseShardingStrategy = null == defaultDatabaseShardingStrategy ? new NoneShardingStrategy() : defaultDatabaseShardingStrategy;
this.defaultTableShardingStrategy = null == defaultTableShardingStrategy ? new NoneShardingStrategy() : defaultTableShardingStrategy;
this.defaultKeyGenerator = null == defaultKeyGenerator ? KeyGeneratorFactory.createKeyGenerator(DefaultKeyGenerator.class) : defaultKeyGenerator;
}
/**
......@@ -143,7 +143,7 @@ public final class ShardingRule {
* @return database sharding strategy
*/
public ShardingStrategy getDatabaseShardingStrategy(final TableRule tableRule) {
return null == tableRule.getDatabaseShardingStrategy() ? databaseShardingStrategy : tableRule.getDatabaseShardingStrategy();
return null == tableRule.getDatabaseShardingStrategy() ? defaultDatabaseShardingStrategy : tableRule.getDatabaseShardingStrategy();
}
/**
......@@ -157,7 +157,7 @@ public final class ShardingRule {
* @return table sharding strategy
*/
public ShardingStrategy getTableShardingStrategy(final TableRule tableRule) {
return null == tableRule.getTableShardingStrategy() ? tableShardingStrategy : tableRule.getTableShardingStrategy();
return null == tableRule.getTableShardingStrategy() ? defaultTableShardingStrategy : tableRule.getTableShardingStrategy();
}
/**
......@@ -222,7 +222,7 @@ public final class ShardingRule {
* @return is sharding column or not
*/
public boolean isShardingColumn(final Column column) {
if (databaseShardingStrategy.getShardingColumns().contains(column.getName()) || tableShardingStrategy.getShardingColumns().contains(column.getName())) {
if (defaultDatabaseShardingStrategy.getShardingColumns().contains(column.getName()) || defaultTableShardingStrategy.getShardingColumns().contains(column.getName())) {
return true;
}
for (TableRule each : tableRules) {
......@@ -268,7 +268,7 @@ public final class ShardingRule {
if (null != tableRule.get().getKeyGenerator()) {
return tableRule.get().getKeyGenerator().generateKey();
}
return keyGenerator.generateKey();
return defaultKeyGenerator.generateKey();
}
/**
......
......@@ -56,7 +56,7 @@ public final class DatabaseHintSQLRouter implements SQLRouter {
// TODO insert SQL need parse gen key
public SQLRouteResult route(final String logicSQL, final List<Object> parameters, final SQLStatement sqlStatement) {
SQLRouteResult result = new SQLRouteResult(sqlStatement);
RoutingResult routingResult = new DatabaseHintRoutingEngine(shardingRule.getDataSourceRule(), (HintShardingStrategy) shardingRule.getDatabaseShardingStrategy()).route();
RoutingResult routingResult = new DatabaseHintRoutingEngine(shardingRule.getDataSourceRule(), (HintShardingStrategy) shardingRule.getDefaultDatabaseShardingStrategy()).route();
for (TableUnit each : routingResult.getTableUnits().getTableUnits()) {
result.getExecutionUnits().add(new SQLExecutionUnit(each.getDataSourceName(), logicSQL));
}
......
......@@ -42,31 +42,31 @@ public final class ShardingRuleTest {
@Test
public void assertShardingRuleWithoutStrategy() {
ShardingRule actual = ShardingRule.builder().dataSourceRule(createDataSourceRule()).tableRules(Collections.singletonList(createTableRule())).build();
assertTrue(actual.getDatabaseShardingStrategy().getShardingColumns().isEmpty());
assertTrue(actual.getTableShardingStrategy().getShardingColumns().isEmpty());
assertTrue(actual.getDefaultDatabaseShardingStrategy().getShardingColumns().isEmpty());
assertTrue(actual.getDefaultTableShardingStrategy().getShardingColumns().isEmpty());
}
@Test
public void assertShardingRuleWithBindingTableRuleWithoutStrategy() {
ShardingRule actual = createShardingRule();
assertTrue(actual.getDatabaseShardingStrategy().getShardingColumns().isEmpty());
assertTrue(actual.getTableShardingStrategy().getShardingColumns().isEmpty());
assertTrue(actual.getDefaultDatabaseShardingStrategy().getShardingColumns().isEmpty());
assertTrue(actual.getDefaultTableShardingStrategy().getShardingColumns().isEmpty());
}
@Test
public void assertShardingRuleWithDatabaseStrategy() {
ShardingRule actual = ShardingRule.builder().dataSourceRule(createDataSourceRule())
.tableRules(Collections.singletonList(createTableRule())).databaseShardingStrategy(new NoneShardingStrategy()).build();
assertTrue(actual.getDatabaseShardingStrategy().getShardingColumns().isEmpty());
assertTrue(actual.getTableShardingStrategy().getShardingColumns().isEmpty());
assertTrue(actual.getDefaultDatabaseShardingStrategy().getShardingColumns().isEmpty());
assertTrue(actual.getDefaultTableShardingStrategy().getShardingColumns().isEmpty());
}
@Test
public void assertShardingRuleWithTableStrategy() {
ShardingRule actual = ShardingRule.builder().dataSourceRule(createDataSourceRule())
.tableRules(Collections.singletonList(createTableRule())).tableShardingStrategy(new NoneShardingStrategy()).build();
assertTrue(actual.getDatabaseShardingStrategy().getShardingColumns().isEmpty());
assertTrue(actual.getDatabaseShardingStrategy().getShardingColumns().isEmpty());
assertTrue(actual.getDefaultDatabaseShardingStrategy().getShardingColumns().isEmpty());
assertTrue(actual.getDefaultDatabaseShardingStrategy().getShardingColumns().isEmpty());
}
@Test
......@@ -75,8 +75,8 @@ public final class ShardingRuleTest {
.tableRules(Collections.singletonList(createTableRule()))
.databaseShardingStrategy(new NoneShardingStrategy())
.tableShardingStrategy(new NoneShardingStrategy()).build();
assertTrue(actual.getDatabaseShardingStrategy().getShardingColumns().isEmpty());
assertTrue(actual.getDatabaseShardingStrategy().getShardingColumns().isEmpty());
assertTrue(actual.getDefaultDatabaseShardingStrategy().getShardingColumns().isEmpty());
assertTrue(actual.getDefaultDatabaseShardingStrategy().getShardingColumns().isEmpty());
}
@Test
......
......@@ -71,8 +71,8 @@ Sharding-JDBC的分库分表通过规则配置描述,请简单浏览配置全
ShardingRule shardingRule = ShardingRule.builder()
.dataSourceRule(dataSourceRule)
.tableRules(tableRuleList)
.databaseShardingStrategy(new DatabaseShardingStrategy("sharding_column", new XXXShardingAlgorithm()))
.tableShardingStrategy(new TableShardingStrategy("sharding_column", new XXXShardingAlgorithm())))
.defaultDatabaseShardingStrategy(new StandardShardingStrategy("sharding_column", new XXXShardingAlgorithm()))
.defaultTableShardingStrategy(new StandardShardingStrategy("sharding_column", new XXXShardingAlgorithm())))
.build();
```
......
......@@ -29,8 +29,8 @@ Sharding-JDBC的分库分表通过规则配置描述,请简单浏览配置全
ShardingRule shardingRule = ShardingRule.builder()
.dataSourceRule(dataSourceRule)
.tableRules(tableRuleList)
.databaseShardingStrategy(new DatabaseShardingStrategy("sharding_column", new XXXShardingAlgorithm()))
.tableShardingStrategy(new TableShardingStrategy("sharding_column", new XXXShardingAlgorithm())))
.defaultDatabaseShardingStrategy(new StandardShardingStrategy("sharding_column", new XXXShardingAlgorithm()))
.defaultTableShardingStrategy(new StandardShardingStrategy("sharding_column", new XXXShardingAlgorithm())))
.build();
```
......
......@@ -36,7 +36,7 @@ TableRule.builder("t_order").generateKeyColumns("order_id");
配置全局生成器(com.xx.xx.KeyGenerator):
```java
ShardingRule.builder().keyGenerator(com.xx.xx.KeyGenerator.class);
ShardingRule.builder().defaultKeyGenerator(com.xx.xx.KeyGenerator.class);
```
......
......@@ -86,8 +86,8 @@ select * from db0.t_order_0 where user_id = ? and order_id = ?;
ShardingRule shardingRule = ShardingRule.builder()
.dataSourceRule(dataSourceRule)
.tableRules(Arrays.asList(orderTableRule, orderItemTableRule))
.databaseShardingStrategy(new DatabaseShardingStrategy("user_id", new ModuloDatabaseShardingAlgorithm()))
.tableShardingStrategy(new TableShardingStrategy("order_id", new ModuloTableShardingAlgorithm()))
.defaultDatabaseShardingStrategy(new StandardShardingStrategy("user_id", new ModuloDatabaseShardingAlgorithm()))
.defaultTableShardingStrategy(new StandardShardingStrategy("order_id", new ModuloTableShardingAlgorithm()))
.build();
```
## 数据源配置
......@@ -127,8 +127,8 @@ Sharding-JDBC认为对于分片策略存有两种维度
TableRule orderTableRule = TableRule.builder("t_order")
.actualTables(Arrays.asList("t_order_0", "t_order_1")
.dataSourceRule(dataSourceRule)
.databaseShardingStrategy(new DatabaseShardingStrategy("user_id", new ModuloDatabaseShardingAlgorithm()))
.tableShardingStrategy(new TableShardingStrategy("order_id", new ModuloTableShardingAlgorithm())))
.defaultDatabaseShardingStrategy(new DatabaseShardingStrategy("user_id", new ModuloDatabaseShardingAlgorithm()))
.defaultTableShardingStrategy(new TableShardingStrategy("order_id", new ModuloTableShardingAlgorithm())))
.build();
```
......@@ -147,8 +147,8 @@ Sharding-JDBC认为对于分片策略存有两种维度
ShardingRule shardingRule = ShardingRule.builder()
.dataSourceRule(dataSourceRule)
.tableRules(Arrays.asList(orderTableRule, orderItemTableRule))
.databaseShardingStrategy(new DatabaseShardingStrategy("user_id", new ModuloDatabaseShardingAlgorithm()))
.tableShardingStrategy(new TableShardingStrategy("order_id", new ModuloTableShardingAlgorithm()))
.defaultDatabaseShardingStrategy(new DatabaseShardingStrategy("user_id", new ModuloDatabaseShardingAlgorithm()))
.defaultTableShardingStrategy(new TableShardingStrategy("order_id", new ModuloTableShardingAlgorithm()))
.build();
```
......@@ -161,14 +161,14 @@ Sharding-JDBC认为对于分片策略存有两种维度
TableRule orderItemTableRule = TableRule.builder("t_order_item")
.actualTables(Arrays.asList("t_order_item_0", "t_order_item_1"))
.dataSourceRule(dataSourceRule)
.databaseShardingStrategy(new DatabaseShardingStrategy("user_id", new ModuloDatabaseShardingAlgorithm()))
.tableShardingStrategy(new TableShardingStrategy("order_id", new ModuloTableShardingAlgorithm()))
.defaultDatabaseShardingStrategy(new DatabaseShardingStrategy("user_id", new ModuloDatabaseShardingAlgorithm()))
.defaultTableShardingStrategy(new TableShardingStrategy("order_id", new ModuloTableShardingAlgorithm()))
.build();
ShardingRule shardingRule = ShardingRule.builder()
.dataSourceRule(dataSourceRule)
.tableRules(Arrays.asList(orderTableRule, orderItemTableRule))
.databaseShardingStrategy(new DatabaseShardingStrategy("user_id", new ModuloDatabaseShardingAlgorithm()))
.tableShardingStrategy(new TableShardingStrategy("order_id", new ModuloTableShardingAlgorithm()))
.defaultDatabaseShardingStrategy(new DatabaseShardingStrategy("user_id", new ModuloDatabaseShardingAlgorithm()))
.defaultTableShardingStrategy(new TableShardingStrategy("order_id", new ModuloTableShardingAlgorithm()))
.build();
```
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册