diff --git a/build.gradle b/build.gradle index 09a60a5..33a66c0 100644 --- a/build.gradle +++ b/build.gradle @@ -23,7 +23,7 @@ dependencies { compile('org.springframework:spring-jdbc:5.1.9.RELEASE') compile('mysql:mysql-connector-java:5.1.47') compile('com.alibaba:druid:1.2.4') - compile("org.apache.shardingsphere:sharding-jdbc-spring-boot-starter:4.1.1") + compile("org.apache.shardingsphere:shardingsphere-sharding-spring-boot-starter:5.0.0-alpha") } repositories { diff --git a/src/main/java/com/taover/repository/jdbctemplate/JdbcTemplateBroadcastImpl.java b/src/main/java/com/taover/repository/jdbctemplate/JdbcTemplateBroadcastImpl.java index 331b7b8..d4901b2 100644 --- a/src/main/java/com/taover/repository/jdbctemplate/JdbcTemplateBroadcastImpl.java +++ b/src/main/java/com/taover/repository/jdbctemplate/JdbcTemplateBroadcastImpl.java @@ -4,7 +4,7 @@ import java.util.Collection; import java.util.List; import java.util.Map; -import org.apache.shardingsphere.api.hint.HintManager; +import org.apache.shardingsphere.infra.hint.HintManager; import org.springframework.dao.DataAccessException; import org.springframework.jdbc.core.BatchPreparedStatementSetter; import org.springframework.jdbc.core.CallableStatementCallback; diff --git a/src/main/java/com/taover/repository/jdbctemplate/JdbcTemplateWrapperTenantImpl.java b/src/main/java/com/taover/repository/jdbctemplate/JdbcTemplateWrapperTenantImpl.java index 825f4c0..0051697 100644 --- a/src/main/java/com/taover/repository/jdbctemplate/JdbcTemplateWrapperTenantImpl.java +++ b/src/main/java/com/taover/repository/jdbctemplate/JdbcTemplateWrapperTenantImpl.java @@ -4,7 +4,7 @@ import java.util.Collection; import java.util.List; import java.util.Map; -import org.apache.shardingsphere.api.hint.HintManager; +import org.apache.shardingsphere.infra.hint.HintManager; import org.springframework.dao.DataAccessException; import org.springframework.jdbc.core.BatchPreparedStatementSetter; import org.springframework.jdbc.core.CallableStatementCallback; diff --git a/src/main/java/com/taover/repository/shardingsphere/ShardingDatabaseAlgorithmHint.java b/src/main/java/com/taover/repository/shardingsphere/ShardingDatabaseAlgorithmHint.java index 793e92c..471a5c7 100644 --- a/src/main/java/com/taover/repository/shardingsphere/ShardingDatabaseAlgorithmHint.java +++ b/src/main/java/com/taover/repository/shardingsphere/ShardingDatabaseAlgorithmHint.java @@ -2,15 +2,17 @@ package com.taover.repository.shardingsphere; import java.util.Collection; import java.util.HashSet; +import java.util.Properties; import java.util.Set; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.apache.shardingsphere.api.sharding.hint.HintShardingAlgorithm; -import org.apache.shardingsphere.api.sharding.hint.HintShardingValue; +import org.apache.shardingsphere.sharding.api.sharding.hint.HintShardingAlgorithm; +import org.apache.shardingsphere.sharding.api.sharding.hint.HintShardingValue; public class ShardingDatabaseAlgorithmHint implements HintShardingAlgorithm { Log log = LogFactory.getLog(ShardingDatabaseAlgorithmHint.class); + Properties prop = null; public ShardingDatabaseAlgorithmHint() { } @@ -28,4 +30,24 @@ public class ShardingDatabaseAlgorithmHint implements HintShardingAlgorithm */ -public final class ShardingKeyGeneratorImpl implements ShardingKeyGenerator, ShardingKeyGeneratorExt { +public final class ShardingKeyGeneratorImpl implements KeyGenerateAlgorithm, ShardingKeyGeneratorExt { public static final long EPOCH; @@ -183,16 +183,6 @@ public final class ShardingKeyGeneratorImpl implements ShardingKeyGenerator, Sha return data; } - @Override - public Properties getProperties() { - return this.properties; - } - - @Override - public void setProperties(Properties properties) { - this.properties = properties; - } - public static void setTimeService(TimeService timeService) { ShardingKeyGeneratorImpl.timeService = timeService; } @@ -209,4 +199,19 @@ public final class ShardingKeyGeneratorImpl implements ShardingKeyGenerator, Sha properties.setProperty("max.vibration.offset", config.getMaxVibrationOffset()); } } + + @Override + public Properties getProps() { + return this.properties; + } + + @Override + public void setProps(Properties props) { + this.properties = props; + } + + @Override + public void init() { + System.out.println("ShardingKeyGeneratorImpl:init"); + } } diff --git a/src/main/java/com/taover/repository/shardingsphere/ShardingTableAlgorithmHint.java b/src/main/java/com/taover/repository/shardingsphere/ShardingTableAlgorithmHint.java index eca16ce..df4e0a5 100644 --- a/src/main/java/com/taover/repository/shardingsphere/ShardingTableAlgorithmHint.java +++ b/src/main/java/com/taover/repository/shardingsphere/ShardingTableAlgorithmHint.java @@ -2,16 +2,19 @@ package com.taover.repository.shardingsphere; import java.util.Collection; import java.util.HashSet; +import java.util.Properties; import java.util.Set; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.apache.shardingsphere.api.sharding.hint.HintShardingAlgorithm; -import org.apache.shardingsphere.api.sharding.hint.HintShardingValue; +import org.apache.shardingsphere.sharding.api.sharding.hint.HintShardingAlgorithm; +import org.apache.shardingsphere.sharding.api.sharding.hint.HintShardingValue; public class ShardingTableAlgorithmHint implements HintShardingAlgorithm { Log log = LogFactory.getLog(ShardingTableAlgorithmHint.class); + Properties prop = null; + public ShardingTableAlgorithmHint() { } @Override @@ -28,4 +31,24 @@ public class ShardingTableAlgorithmHint implements HintShardingAlgorithm } return result; } + + @Override + public String getType() { + return "TABLE-HINT"; + } + + @Override + public Properties getProps() { + return this.prop; + } + + @Override + public void setProps(Properties props) { + this.prop = props; + } + + @Override + public void init() { + System.out.println("ShardingTableAlgorithmHint:init"); + } } diff --git a/src/test/java/com/taover/repository/test/TestAutoconfigure.java b/src/test/java/com/taover/repository/test/TestAutoconfigure.java index b30c82b..10406c1 100644 --- a/src/test/java/com/taover/repository/test/TestAutoconfigure.java +++ b/src/test/java/com/taover/repository/test/TestAutoconfigure.java @@ -1,11 +1,13 @@ package com.taover.repository.test; +import java.util.List; +import java.util.Map; + import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.ConfigurableApplicationContext; import org.springframework.scheduling.annotation.EnableScheduling; -import com.taover.repository.jdbctemplate.JdbcTemplateBroadcast; import com.taover.repository.jdbctemplate.JdbcTemplateWrapperTenant; @SpringBootApplication @@ -14,13 +16,37 @@ public class TestAutoconfigure { public static void main(String args[]) { ConfigurableApplicationContext context = SpringApplication.run(TestAutoconfigure.class, args); - JdbcTemplateBroadcast jdbcTemplateB = context.getBean(JdbcTemplateBroadcast.class); - System.out.println(jdbcTemplateB.queryForObject("select id from wxorder_order order by id desc limit 5 ", String.class, new String[]{"wxorder_order"})); +// JdbcTemplateBroadcast jdbcTemplateB = context.getBean(JdbcTemplateBroadcast.class); +// System.out.println(jdbcTemplateB.queryForObject("select id from wxorder_order order by id desc limit 5 ", String.class, new String[]{"wxorder_order"})); // JdbcTemplateWrapperTenant jdbcTemplate = context.getBean(JdbcTemplateWrapperTenant.class); // System.out.println(jdbcTemplate.queryForObject("select id from wxorder_order limit 1", Long.class, 1L)); // System.out.println(jdbcTemplate.queryForList("select * from wxorder_order limit 1", 1L)); // System.out.println(jdbcTemplate.queryForList("select * from wxorder_order limit 1", 2L)); // System.out.println(jdbcTemplate.queryForList("select * from wxorder_order_express limit 1", 1L)); + + String sql = " SELECT wo.customer_network_name as customerNetworkName,wo.order_sn AS orderSn, wog.`goods_name` AS goodsName, wog.`sku_name` AS skuName, wog.`goods_number` AS saleNumber," + // woe.order_goods_id woe.order_goods_origin_id + + " (SELECT sum(woe.`goods_number`) from `wxorder_order_express` as woe WHERE woe.order_goods_id = wog.id and woe.tenant_id=16)as deliveryGoodsNumber, " + + " ww.name as wareName, ww.manager_nickname as wareManager, " + + " wc.name as channelName, " + + " wog.goods_base_sku_price as costSinglePrice, " + + " wc.manager_nickname as channelManager," + + " (wog.money_paid-wog.refund_money) AS shouldReceiveMoney, " + + " wog.refund_money AS channelRefund, " + + " wog.ware_refund_money AS wareRefund, " + + " (wog.goods_base_sku_price*wog.goods_number+wog.ware_shipping_price) AS cost, " + + " wog.channel_goods_price as channelGoodsPrice, " + + " wog.money_paid as moneyPaid, " + + " wo.create_time as orderTime " + + " FROM `wxorder_order` wo " + + " INNER JOIN `wxorder_order_goods_origin` wog ON wo.id = wog.`order_id` and wo.tenant_id=16 and wog.tenant_id=16 " + + " INNER JOIN wxorder_channel as wc on wc.id = wo.channel_id " + + " INNER JOIN wxorder_ware as ww on ww.id=wo.ware_id " + + " INNER JOIN wxorder_channel_goods as wcg on wcg.id = wog.channel_goods_id" + + " limit 10 "; + JdbcTemplateWrapperTenant jdbcTemplate = context.getBean(JdbcTemplateWrapperTenant.class); + List> data = jdbcTemplate.queryForList(sql, 16L); + System.out.println(data); } } diff --git a/src/test/resources/application.properties b/src/test/resources/application.properties index 007fa12..088c3f3 100644 --- a/src/test/resources/application.properties +++ b/src/test/resources/application.properties @@ -13,9 +13,9 @@ spring.gson.serialize-nulls=true spring.mvc.dispatch-options-request=true # shardingspere -spring.shardingsphere.datasource.names=ds0,ds1 -spring.shardingsphere.datasource.ds0.type=com.alibaba.druid.pool.DruidDataSource -spring.shardingsphere.datasource.ds0.driver-class-name=com.mysql.jdbc.Driver +spring.shardingsphere.datasource.names=ds0 +spring.shardingsphere.datasource.common.type=com.alibaba.druid.pool.DruidDataSource +spring.shardingsphere.datasource.common.driver-class-name=com.mysql.jdbc.Driver spring.shardingsphere.datasource.ds0.url=jdbc:mysql://rdsifmezqifmezqo.mysql.rds.aliyuncs.com:3306/bzyun_wxorder?characterEncoding=UTF-8 spring.shardingsphere.datasource.ds0.username=tylife spring.shardingsphere.datasource.ds0.password=lexi365 @@ -24,27 +24,27 @@ spring.shardingsphere.datasource.ds0.max-active=20 spring.shardingsphere.datasource.ds0.min-idle=5 spring.shardingsphere.datasource.ds0.max-wait=60000 -spring.shardingsphere.datasource.ds1.type=com.alibaba.druid.pool.DruidDataSource -spring.shardingsphere.datasource.ds1.driver-class-name=com.mysql.jdbc.Driver -spring.shardingsphere.datasource.ds1.url=jdbc:mysql://121.42.142.102:3306/bzyun_wxorder?characterEncoding=UTF-8 -spring.shardingsphere.datasource.ds1.username=dev -spring.shardingsphere.datasource.ds1.password=taover02 -spring.shardingsphere.datasource.ds1.initial-size=10 -spring.shardingsphere.datasource.ds1.max-active=20 -spring.shardingsphere.datasource.ds1.min-idle=5 -spring.shardingsphere.datasource.ds1.max-wait=60000 - -spring.shardingsphere.sharding.tables.wxorder_order.actual-data-nodes=ds0.wxorder_order,ds1.wxorder_order -spring.shardingsphere.sharding.tables.wxorder_order.database-strategy.hint.algorithm-class-name=com.taover.repository.shardingsphere.ShardingDatabaseAlgorithmHint -spring.shardingsphere.sharding.tables.wxorder_order.table-strategy.hint.algorithm-class-name=com.taover.repository.shardingsphere.ShardingTableAlgorithmHint -spring.shardingsphere.sharding.tables.wxorder_order.key-generator.column=id -spring.shardingsphere.sharding.tables.wxorder_order.key-generator.type=SNOWFLAKE-SELF - -spring.shardingsphere.sharding.tables.wxorder_order_goods.actual-data-nodes=ds0.wxorder_order_goods -spring.shardingsphere.sharding.tables.wxorder_order_goods.database-strategy.hint.algorithm-class-name=com.taover.repository.shardingsphere.ShardingDatabaseAlgorithmHint -spring.shardingsphere.sharding.tables.wxorder_order_goods.table-strategy.hint.algorithm-class-name=com.taover.repository.shardingsphere.ShardingTableAlgorithmHint -spring.shardingsphere.sharding.tables.wxorder_order_goods.key-generator.column=id -spring.shardingsphere.sharding.tables.wxorder_order_goods.key-generator.type=SNOWFLAKE-SELF +#spring.shardingsphere.datasource.ds1.type=com.alibaba.druid.pool.DruidDataSource +#spring.shardingsphere.datasource.ds1.driver-class-name=com.mysql.jdbc.Driver +#spring.shardingsphere.datasource.ds1.url=jdbc:mysql://121.42.142.102:3306/bzyun_wxorder?characterEncoding=UTF-8 +#spring.shardingsphere.datasource.ds1.username=dev +#spring.shardingsphere.datasource.ds1.password=taover02 +#spring.shardingsphere.datasource.ds1.initial-size=10 +#spring.shardingsphere.datasource.ds1.max-active=20 +#spring.shardingsphere.datasource.ds1.min-idle=5 +#spring.shardingsphere.datasource.ds1.max-wait=60000 +# +#spring.shardingsphere.sharding.tables.wxorder_order.actual-data-nodes=ds0.wxorder_order,ds1.wxorder_order +#spring.shardingsphere.sharding.tables.wxorder_order.database-strategy.hint.algorithm-class-name=com.taover.repository.shardingsphere.ShardingDatabaseAlgorithmHint +#spring.shardingsphere.sharding.tables.wxorder_order.table-strategy.hint.algorithm-class-name=com.taover.repository.shardingsphere.ShardingTableAlgorithmHint +#spring.shardingsphere.sharding.tables.wxorder_order.key-generator.column=id +#spring.shardingsphere.sharding.tables.wxorder_order.key-generator.type=SNOWFLAKE-SELF +# +#spring.shardingsphere.sharding.tables.wxorder_order_goods.actual-data-nodes=ds0.wxorder_order_goods +#spring.shardingsphere.sharding.tables.wxorder_order_goods.database-strategy.hint.algorithm-class-name=com.taover.repository.shardingsphere.ShardingDatabaseAlgorithmHint +#spring.shardingsphere.sharding.tables.wxorder_order_goods.table-strategy.hint.algorithm-class-name=com.taover.repository.shardingsphere.ShardingTableAlgorithmHint +#spring.shardingsphere.sharding.tables.wxorder_order_goods.key-generator.column=id +#spring.shardingsphere.sharding.tables.wxorder_order_goods.key-generator.type=SNOWFLAKE-SELF taover.sharding.workerId=1 taover.sharding.maxVibrationOffset=3 -- libgit2 0.21.2