sunlife95 commented on issue #28069:
URL:
https://github.com/apache/shardingsphere/issues/28069#issuecomment-1680090893
> Are you using ShardingSphere-JDBC?
yes, and i config with java
`
/**
* 初始化分表规则
*/
private ShardingRuleConfiguration getShardingRuleConfiguration() {
ShardingRuleConfiguration ruleConfiguration = new
ShardingRuleConfiguration();
// 分库策略:不分库只分表
ruleConfiguration.setDefaultDatabaseShardingStrategy(new
NoneShardingStrategyConfiguration());
// 分表策略:默认不分表
ruleConfiguration.setDefaultTableShardingStrategy(new
NoneShardingStrategyConfiguration());
// 默认自增列值生成器
ruleConfiguration.getKeyGenerators().putIfAbsent("myKeyGenerator",
new AlgorithmConfiguration("myKeyGenerator", new Properties()));
ruleConfiguration.setDefaultKeyGenerateStrategy(new
KeyGenerateStrategyConfiguration("shard_column", "myKeyGenerator");
// 分表规则
ruleConfiguration.getShardingAlgorithms().putIfAbsent(ShardingAlgorithmConsts.HASH_MODULO_ALGORITHM,
new AlgorithmConfiguration(ShardingAlgorithmConsts.HASH_MODULO_ALGORITHM, new
Properties()));
// 分片规则
ShardingTableRuleConfiguration result = new
ShardingTableRuleConfiguration("shard_table", "ds_0.shard_table_${0..7}");
result.setKeyGenerateStrategy(new
KeyGenerateStrategyConfiguration("shard_column", "myKeyGenerator"));
result.setTableShardingStrategy(new
StandardShardingStrategyConfiguration("shard_column", "myShardAlgorithm"));
ruleConfiguration.getTables().add(result);
return ruleConfiguration;
}
/**
* 初始化单表规则
*/
private SingleRuleConfiguration getSingleRuleConfiguration() {
List<String> singleTableList = Lists.newArrayList();
singleTableList.add("*.*");
return new SingleRuleConfiguration(singleTableList, "ds_0");
}
/**
* 主从分离配置
* @return
* @throws SQLException
*/
private ReadwriteSplittingRuleConfiguration
getReadWriteSplittingRuleConfiguration() {
ReadwriteSplittingDataSourceRuleConfiguration
dataSourceConfiguration = new
ReadwriteSplittingDataSourceRuleConfiguration("ds_0", MASTER_NAME, SLAVE_NAMES,
"roundRobin");
//负载均衡算法
Map<String, AlgorithmConfiguration> loadBalanceMaps = new
HashMap<>(1);
loadBalanceMaps.put("roundRobin", new
AlgorithmConfiguration("ROUND_ROBIN", new Properties()));
return new
ReadwriteSplittingRuleConfiguration(Lists.newArrayList(dataSourceConfiguration),
loadBalanceMaps);
}
/**
* 初始化sharding 数据源
* @return
* @throws SQLException
*/
@Bean
public DataSource shardingDataSource() throws SQLException {
// 分表规则配置
ShardingRuleConfiguration shardingRuleConfiguration =
getShardingRuleConfiguration();
// 读写分离配置
ReadwriteSplittingRuleConfiguration
readwriteSplittingRuleConfiguration = getReadWriteSplittingRuleConfiguration();
// 单表配置
SingleRuleConfiguration singleRuleConfiguration =
getSingleRuleConfiguration();
// sharding sql显示配置
Properties props = new Properties();
props.put(ConfigurationPropertyKey.SQL_SHOW.getKey(), showSql);
return ShardingSphereDataSourceFactory.createDataSource("ds_0", new
ModeConfiguration("Standalone", null), createDataSourceMap(),
Lists.newArrayList(shardingRuleConfiguration,
readwriteSplittingRuleConfiguration, singleRuleConfiguration), props);
}
`
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]