|
@@ -0,0 +1,78 @@
|
|
|
|
+package com.xin.shardingspherejdbcdemo.config.sharding;
|
|
|
|
+
|
|
|
|
+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.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;
|
|
|
|
+
|
|
|
|
+@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> 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);
|
|
|
|
+
|
|
|
|
+ // 配置Order表规则
|
|
|
|
+ TableRuleConfiguration orderTableRuleConfig = new TableRuleConfiguration("user", "master0.user$->{0..2}");
|
|
|
|
+ // 配置分库 + 分表策略
|
|
|
|
+ orderTableRuleConfig.setTableShardingStrategyConfig(new InlineShardingStrategyConfiguration("id", "user$->{id%3}"));
|
|
|
|
+
|
|
|
|
+ ShardingRuleConfiguration shardingRuleConfig = new ShardingRuleConfiguration();
|
|
|
|
+ shardingRuleConfig.getTableRuleConfigs().add(orderTableRuleConfig);
|
|
|
|
+
|
|
|
|
+ return ShardingDataSourceFactory.createDataSource(dataSourceMap, shardingRuleConfig, new Properties());
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+}
|