|
@@ -4,75 +4,85 @@ import com.alibaba.druid.pool.DruidDataSource;
|
|
|
import org.apache.shardingsphere.api.config.sharding.ShardingRuleConfiguration;
|
|
|
import org.apache.shardingsphere.api.config.sharding.TableRuleConfiguration;
|
|
|
import org.apache.shardingsphere.api.config.sharding.strategy.InlineShardingStrategyConfiguration;
|
|
|
+import org.apache.shardingsphere.api.config.sharding.strategy.ShardingStrategyConfiguration;
|
|
|
import org.apache.shardingsphere.shardingjdbc.api.ShardingDataSourceFactory;
|
|
|
import org.springframework.context.annotation.Bean;
|
|
|
import org.springframework.context.annotation.Configuration;
|
|
|
|
|
|
import javax.sql.DataSource;
|
|
|
import java.sql.SQLException;
|
|
|
-import java.util.HashMap;
|
|
|
-import java.util.Map;
|
|
|
-import java.util.Properties;
|
|
|
+import java.util.*;
|
|
|
|
|
|
@Configuration
|
|
|
public class MyShardingDataSourceConfig {
|
|
|
|
|
|
|
|
|
-// // 配置真实数据源
|
|
|
-// Map<String, DataSource> createDataSourceMap() {
|
|
|
-// // 配置真实数据源
|
|
|
-// Map<String, DataSource> dataSourceMap = new HashMap<>();
|
|
|
-// // 配置第一个数据源
|
|
|
-// DruidDataSource dataSource1 = new DruidDataSource();
|
|
|
-// dataSource1.setDbType("mysql");
|
|
|
-// dataSource1.setDriverClassName("com.mysql.jdbc.Driver");
|
|
|
-// dataSource1.setUrl("jdbc:mysql://192.168.29.131:3306/study");
|
|
|
-// dataSource1.setUsername("root");
|
|
|
-// dataSource1.setPassword("123456");
|
|
|
-// dataSourceMap.put("master0", dataSource1);
|
|
|
-// return dataSourceMap;
|
|
|
-// }
|
|
|
-//
|
|
|
-// TableRuleConfiguration createTableRuleConfiguration() {
|
|
|
-// // 配置Order表规则
|
|
|
-// TableRuleConfiguration orderTableRuleConfig = new TableRuleConfiguration("user", "master0.user$->{0..2}");
|
|
|
-// // 配置分库 + 分表策略
|
|
|
-// orderTableRuleConfig.setTableShardingStrategyConfig(new InlineShardingStrategyConfiguration("id", "user$->{id%3}"));
|
|
|
-// return orderTableRuleConfig;
|
|
|
-// }
|
|
|
-//
|
|
|
-// ShardingRuleConfiguration createShardingRuleConfiguration() {
|
|
|
-// ShardingRuleConfiguration shardingRuleConfig = new ShardingRuleConfiguration();
|
|
|
-// shardingRuleConfig.getTableRuleConfigs().add(createTableRuleConfiguration());
|
|
|
-// return shardingRuleConfig;
|
|
|
-// }
|
|
|
-
|
|
|
- /**
|
|
|
- * @return
|
|
|
- * @throws SQLException
|
|
|
- */
|
|
|
- @Bean
|
|
|
- public DataSource getShardingDataSource() throws SQLException {
|
|
|
+ // 配置真实数据源
|
|
|
+ Map<String, DataSource> createDataSourceMap() {
|
|
|
// 配置真实数据源
|
|
|
Map<String, DataSource> dataSourceMap = new HashMap<>();
|
|
|
// 配置第一个数据源
|
|
|
- DruidDataSource dataSource1 = new DruidDataSource();
|
|
|
- dataSource1.setDbType("mysql");
|
|
|
- dataSource1.setDriverClassName("com.mysql.cj.jdbc.Driver");
|
|
|
- dataSource1.setUrl("jdbc:mysql://192.168.29.131:3306/study");
|
|
|
- dataSource1.setUsername("root");
|
|
|
- dataSource1.setPassword("123456");
|
|
|
- dataSourceMap.put("master0", dataSource1);
|
|
|
+ DruidDataSource order0 = new DruidDataSource();
|
|
|
+ order0.setDbType("mysql");
|
|
|
+ order0.setDriverClassName("com.mysql.cj.jdbc.Driver");
|
|
|
+ order0.setUrl("jdbc:mysql://192.168.29.131:3306/sharding_order0");
|
|
|
+ order0.setUsername("root");
|
|
|
+ order0.setPassword("123456");
|
|
|
+ dataSourceMap.put("sharding_order0", order0);
|
|
|
+ // 配置第一个数据源
|
|
|
+ DruidDataSource order1 = new DruidDataSource();
|
|
|
+ order1.setDbType("mysql");
|
|
|
+ order1.setDriverClassName("com.mysql.cj.jdbc.Driver");
|
|
|
+ order1.setUrl("jdbc:mysql://192.168.29.131:3306/sharding_order1");
|
|
|
+ order1.setUsername("root");
|
|
|
+ order1.setPassword("123456");
|
|
|
+ dataSourceMap.put("sharding_order1", order1);
|
|
|
+ // 配置第一个数据源
|
|
|
+ DruidDataSource user = new DruidDataSource();
|
|
|
+ user.setDbType("mysql");
|
|
|
+ user.setDriverClassName("com.mysql.cj.jdbc.Driver");
|
|
|
+ user.setUrl("jdbc:mysql://192.168.29.131:3306/sharding_user");
|
|
|
+ user.setUsername("root");
|
|
|
+ user.setPassword("123456");
|
|
|
+ dataSourceMap.put("sharding_user", user);
|
|
|
+ return dataSourceMap;
|
|
|
+ }
|
|
|
+
|
|
|
+ //分片规则
|
|
|
+ List<TableRuleConfiguration> createTableRuleConfiguration() {
|
|
|
+ List<TableRuleConfiguration> data = new ArrayList<>();
|
|
|
+ // 配置Order表规则
|
|
|
+
|
|
|
+ // 水平分表
|
|
|
+ TableRuleConfiguration userConfig = new TableRuleConfiguration("user", "sharding_user.t_user$->{0..2}");
|
|
|
+ // 配置分库 + 分表策略
|
|
|
+ userConfig.setTableShardingStrategyConfig(new InlineShardingStrategyConfiguration("id", "t_user$->{id%3}"));
|
|
|
|
|
|
- // 配置Order表规则
|
|
|
- TableRuleConfiguration orderTableRuleConfig = new TableRuleConfiguration("user", "master0.user$->{0..2}");
|
|
|
// 配置分库 + 分表策略
|
|
|
- orderTableRuleConfig.setTableShardingStrategyConfig(new InlineShardingStrategyConfiguration("id", "user$->{id%3}"));
|
|
|
+ data.add(userConfig);
|
|
|
+
|
|
|
+ return data;
|
|
|
+ }
|
|
|
|
|
|
+ ShardingRuleConfiguration createShardingRuleConfiguration() {
|
|
|
ShardingRuleConfiguration shardingRuleConfig = new ShardingRuleConfiguration();
|
|
|
- shardingRuleConfig.getTableRuleConfigs().add(orderTableRuleConfig);
|
|
|
+ shardingRuleConfig.getTableRuleConfigs().addAll(createTableRuleConfiguration());
|
|
|
+ return shardingRuleConfig;
|
|
|
+ }
|
|
|
+
|
|
|
+ Properties createProperties() {
|
|
|
+ Properties properties = new Properties();
|
|
|
+ properties.setProperty("sql.show", "true");
|
|
|
+ return properties;
|
|
|
+ }
|
|
|
|
|
|
- return ShardingDataSourceFactory.createDataSource(dataSourceMap, shardingRuleConfig, new Properties());
|
|
|
+ /**
|
|
|
+ * @return
|
|
|
+ * @throws SQLException
|
|
|
+ */
|
|
|
+ @Bean
|
|
|
+ public DataSource getShardingDataSource() throws SQLException {
|
|
|
+ return ShardingDataSourceFactory.createDataSource(createDataSourceMap(), createShardingRuleConfiguration(), createProperties());
|
|
|
}
|
|
|
|
|
|
}
|