Bladeren bron

代码配置

赵冬冬 4 jaren geleden
bovenliggende
commit
83c3995a2d

+ 78 - 0
src/main/java/com/xin/shardingspherejdbcdemo/config/sharding/MyShardingDataSourceConfig.java

@@ -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());
+    }
+
+}