From 7ac856f6484290669928d943febf2b3e9bdda4ce Mon Sep 17 00:00:00 2001 From: AiTeaSoft Date: Tue, 4 Oct 2022 23:31:10 +0800 Subject: [PATCH 1/3] update for V2.0 (Bee Sharding) --- src/main/resources/bee.properties | 13 +++++++++---- .../org/teasoft/exam/coverage/AnnoAdapterTest.java | 2 +- src/test/java/org/teasoft/exam/coverage/Other.java | 14 ++++++++------ .../org/teasoft/exam/coverage/TestCalculate.java | 2 +- .../org/teasoft/honey/osql/util/AnnoUtilTest.java | 2 +- 5 files changed, 20 insertions(+), 13 deletions(-) diff --git a/src/main/resources/bee.properties b/src/main/resources/bee.properties index 53c61a8..51305dc 100644 --- a/src/main/resources/bee.properties +++ b/src/main/resources/bee.properties @@ -126,6 +126,9 @@ bee.osql.sqlKeyWordCase=lower #control Logger.logSQL(msg) use in Bee. bee.osql.showSQL=true +# since v2.0 +bee.osql.showShardingSQL=true + # since v1.8 bee.osql.showSql.showType=true bee.osql.showSql.showExecutableSql=true @@ -144,7 +147,7 @@ bee.osql.showSql.donotPrintCurrentDate=true #default value is :1 bee.osql.naming.translateType=1 #since 1.17 \u540c\u65f6\u4f7f\u7528\u591a\u7528\u4e0d\u540c\u547d\u540d\u8f6c\u6362 -bee.osql.naming.useMoreTranslateType=true +bee.osql.naming.useMoreTranslateType=false #\u8981\u662f\u5b57\u6bb5\u540d\u5168\u7528\u5927\u5199,\u5728\u547d\u540d\u8f6c\u6362\u524d\u9700\u8981\u5148\u8f6c\u6210\u5c0f\u5199,\u5982ORDER_NO #default: to LowerCase before. \u9ed8\u8ba4\u662f\u5148\u8f6c\u5c0f\u5199,\u56e0\u4e3a\u5982\u4e0d\u8f6c,DB\u5b57\u6bb5\u7528\u5168\u5927\u5199\u65f6\u4f1a\u51fa\u9519 @@ -197,7 +200,7 @@ bee.osql.cache.forever=constant #bee.osql.cache.modifySyn=para # since v1.7.2. default value is: false (use cache) -#bee.osql.cache.nocache=false +bee.osql.cache.nocache=false #since v1.8.99 bee.osql.cache.keyUseMD5=true @@ -255,11 +258,13 @@ bee.distribution.genid.replaceOldId=false #--------Notice: do not support define sql in this model. #DOSQL: Distributed Object SQL -bee.dosql.multiDS.enable=false +bee.dosql.multiDS.enable=true #\u652f\u6301\u540c\u65f6\u4f7f\u7528\u591a\u79cd\u7c7b\u578b\u6570\u636e\u5e93\u7684\u6570\u636e\u6e90.support different type database muli-Ds at same time. #eg: have oracle,mysql,..., datasource #bee.dosql.multiDS.differentDbType=true -#bee.dosql.multiDS.defalutDS=ds1 +bee.dosql.multiDS.defalutDS=ds0 + +bee.dosql.multiDS.sharding=true # 1:only r/w, one main and more sub-database; 2:only more database (table name is same) #bee.dosql.multiDS.type=1 diff --git a/src/test/java/org/teasoft/exam/coverage/AnnoAdapterTest.java b/src/test/java/org/teasoft/exam/coverage/AnnoAdapterTest.java index 997ccab..9e6eac8 100644 --- a/src/test/java/org/teasoft/exam/coverage/AnnoAdapterTest.java +++ b/src/test/java/org/teasoft/exam/coverage/AnnoAdapterTest.java @@ -10,7 +10,7 @@ import java.lang.reflect.Field; import org.junit.Test; import org.teasoft.bee.spi.AnnoAdapter; -import org.teasoft.bee.spi.AnnoAdapterBeeDefault; +import org.teasoft.bee.spi.defaultimpl.AnnoAdapterBeeDefault; import org.teasoft.exam.bee.osql.annotation.moretable.Clazz1; import org.teasoft.exam.bee.osql.annotation.moretable.Student1; import org.teasoft.honey.osql.core.Logger; diff --git a/src/test/java/org/teasoft/exam/coverage/Other.java b/src/test/java/org/teasoft/exam/coverage/Other.java index 968df95..40944ee 100644 --- a/src/test/java/org/teasoft/exam/coverage/Other.java +++ b/src/test/java/org/teasoft/exam/coverage/Other.java @@ -7,9 +7,9 @@ package org.teasoft.exam.coverage; import org.junit.Test; -import org.teasoft.bee.distribution.sharding.DsTabStruct; -import org.teasoft.bee.distribution.sharding.ShardingStruct; -import org.teasoft.bee.distribution.sharding.algorithm.CalculateRegistry; +import org.teasoft.bee.sharding.DsTabStruct; +import org.teasoft.bee.sharding.ShardingSimpleStruct; +import org.teasoft.bee.sharding.algorithm.CalculateRegistry; import org.teasoft.honey.osql.core.BeeInitPreLoadService; import org.teasoft.honey.osql.interccept.EmptyInterceptor; import org.teasoft.honey.osql.shortcut.BF; @@ -33,11 +33,12 @@ public class Other { emptyInterceptor.getOneTimeTabName(); emptyInterceptor.getOneTimeTabSuffix(); - ShardingStruct s=new ShardingStruct(); + ShardingSimpleStruct s=new ShardingSimpleStruct(); s.setDsAlgorithm(0); s.setDsName("ds1"); s.setDsRule("id%2"); - s.setShardingValue("1"); + s.setDsShardingValue("1"); + s.setTabShardingValue("1"); s.setTabAlgorithm(0); s.setTabName("orders"); s.setTabRule("id%2"); @@ -45,7 +46,8 @@ public class Other { s.getDsAlgorithm(); s.getDsName(); s.getDsRule(); - s.getShardingValue(); + s.getDsShardingValue(); + s.getTabShardingValue(); s.getTabAlgorithm(); s.getTabName(); s.getTabRule(); diff --git a/src/test/java/org/teasoft/exam/coverage/TestCalculate.java b/src/test/java/org/teasoft/exam/coverage/TestCalculate.java index 5ff980d..4109927 100644 --- a/src/test/java/org/teasoft/exam/coverage/TestCalculate.java +++ b/src/test/java/org/teasoft/exam/coverage/TestCalculate.java @@ -6,7 +6,7 @@ package org.teasoft.exam.coverage; -import org.teasoft.bee.distribution.sharding.algorithm.Calculate; +import org.teasoft.bee.sharding.algorithm.Calculate; /** * Just test diff --git a/src/test/java/org/teasoft/honey/osql/util/AnnoUtilTest.java b/src/test/java/org/teasoft/honey/osql/util/AnnoUtilTest.java index 9334b48..c8f96e1 100644 --- a/src/test/java/org/teasoft/honey/osql/util/AnnoUtilTest.java +++ b/src/test/java/org/teasoft/honey/osql/util/AnnoUtilTest.java @@ -23,7 +23,7 @@ public class AnnoUtilTest { Field field = Orders.class.getDeclaredField("id"); AnnoUtil.isAutoSetString(field); AnnoUtil.isDesensitize(field); - AnnoUtil.isMultiTenancy(field); + AnnoUtil.isMultiTenancyAnno(field); AnnoUtil.isDict(field); AnnoUtil.isDictI18n(field); AnnoUtil.isColumn(field); -- Gitee From a86ffb06e894c8d66f89fbd8d54ad8416bef6e62 Mon Sep 17 00:00:00 2001 From: AiTeaSoft Date: Tue, 4 Oct 2022 23:31:52 +0800 Subject: [PATCH 2/3] update for V2.0 (Bee Sharding) --- .../bee/osql/moretable/entity/Orders.java | 113 +---- .../bee/osql/sharding/InitSameDsUtil.java | 55 +++ .../bee/osql/sharding/MoreSQLFunction.java | 81 ++++ .../exam/bee/osql/sharding/Orders.java | 121 +++++ .../exam/bee/osql/sharding/Orders0.java | 118 +++++ .../exam/bee/osql/sharding/Orders_F.java | 23 + .../exam/bee/osql/sharding/Scores.java | 222 ++++++++++ .../bee/osql/sharding/ScoresResponse.java | 103 +++++ .../osql/sharding/ShardingBatchInsert2.java | 59 +++ .../sharding/ShardingBatchInsertExam.java | 106 +++++ .../bee/osql/sharding/ShardingDeleteExam.java | 74 ++++ .../bee/osql/sharding/ShardingFunAvgExam.java | 52 +++ .../bee/osql/sharding/ShardingFunExam.java | 104 +++++ .../bee/osql/sharding/ShardingInExam11.java | 47 ++ .../bee/osql/sharding/ShardingInitData.java | 82 ++++ .../osql/sharding/ShardingInsertExam10.java | 41 ++ .../bee/osql/sharding/ShardingJsonExam.java | 45 ++ .../bee/osql/sharding/ShardingPaging.java | 64 +++ .../bee/osql/sharding/ShardingPaging2.java | 64 +++ .../bee/osql/sharding/ShardingPaging3.java | 65 +++ .../bee/osql/sharding/ShardingPaging4.java | 63 +++ .../bee/osql/sharding/ShardingPaging5.java | 77 ++++ .../bee/osql/sharding/ShardingPagingSort.java | 72 +++ .../osql/sharding/ShardingPagingSort2.java | 72 +++ .../ShardingPagingSort2StringArray.java | 73 +++ .../osql/sharding/ShardingPagingSort3.java | 57 +++ .../osql/sharding/ShardingPagingSort4.java | 60 +++ .../osql/sharding/ShardingPagingSort5.java | 74 ++++ .../osql/sharding/ShardingPagingSort6.java | 72 +++ .../ShardingPagingSortStringArray.java | 73 +++ .../bee/osql/sharding/ShardingSimpleExam.java | 88 ++++ .../osql/sharding/ShardingSimpleExam1.java | 80 ++++ .../osql/sharding/ShardingSimpleExam1_2.java | 89 ++++ .../osql/sharding/ShardingSimpleExam3.java | 47 ++ .../osql/sharding/ShardingSimpleExam4.java | 50 +++ .../osql/sharding/ShardingSimpleExam4_2.java | 50 +++ .../osql/sharding/ShardingSimpleExam5.java | 42 ++ .../osql/sharding/ShardingSimpleExam6.java | 48 ++ .../osql/sharding/ShardingSimpleExam9.java | 45 ++ .../osql/sharding/ShardingSimpleExam9_1.java | 59 +++ .../osql/sharding/ShardingSimpleExam9_2.java | 57 +++ .../bee/osql/sharding/ShardingUpdateExam.java | 98 +++++ .../exam/bee/osql/sharding/SuidRichExam.java | 415 ++++++++++++++++++ .../SuidRichExamReturnListStringArray.java | 147 +++++++ .../exam/bee/osql/sharding/anno/Orders.java | 124 ++++++ .../exam/bee/osql/sharding/anno/Orders2.java | 126 ++++++ .../exam/bee/osql/sharding/anno/Orders3.java | 128 ++++++ .../exam/bee/osql/sharding/anno/Orders4.java | 127 ++++++ .../exam/bee/osql/sharding/anno/Orders_F.java | 23 + .../sharding/anno/ShardingSimpleExam10.java | 55 +++ .../sharding/anno/ShardingSimpleExam7.java | 45 ++ .../sharding/anno/ShardingSimpleExam7_1.java | 49 +++ .../sharding/anno/ShardingSimpleExam7_2.java | 41 ++ .../sharding/anno/ShardingSimpleExam8.java | 50 +++ .../sharding/anno/ShardingSimpleExam8_2.java | 46 ++ .../sharding/anno/ShardingSimpleExam8_3.java | 49 +++ .../sharding/anno/ShardingSimpleExam9.java | 45 ++ .../exam/bee/osql/sharding/anno/UseJson.java | 134 ++++++ .../exam/bee/osql/sharding/anno/UseJson2.java | 99 +++++ .../exam/bee/osql/sharding/anno/UseJson3.java | 107 +++++ .../exam/bee/osql/sharding/anno/UseJson4.java | 111 +++++ .../exam/bee/osql/sharding/anno/UseJson5.java | 107 +++++ .../sharding/moretable/MoreTableExam.java | 147 +++++++ .../sharding/moretable/MoreTableExam11.java | 58 +++ .../sharding/moretable/MoreTableExam198.java | 99 +++++ .../osql/sharding/moretable/MoreTableFun.java | 50 +++ .../moretable/ShardingBatchInsert2.java | 81 ++++ .../sharding/moretable/entity/Myorders.java | 141 ++++++ .../sharding/moretable/entity/Orders_F.java | 23 + .../moretable/entity/Ordersdetail.java | 80 ++++ .../moretable/entity/Ordersdetail_F.java | 19 + 71 files changed, 5701 insertions(+), 110 deletions(-) create mode 100644 src/main/java/org/teasoft/exam/bee/osql/sharding/InitSameDsUtil.java create mode 100644 src/main/java/org/teasoft/exam/bee/osql/sharding/MoreSQLFunction.java create mode 100644 src/main/java/org/teasoft/exam/bee/osql/sharding/Orders.java create mode 100644 src/main/java/org/teasoft/exam/bee/osql/sharding/Orders0.java create mode 100644 src/main/java/org/teasoft/exam/bee/osql/sharding/Orders_F.java create mode 100644 src/main/java/org/teasoft/exam/bee/osql/sharding/Scores.java create mode 100644 src/main/java/org/teasoft/exam/bee/osql/sharding/ScoresResponse.java create mode 100644 src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingBatchInsert2.java create mode 100644 src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingBatchInsertExam.java create mode 100644 src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingDeleteExam.java create mode 100644 src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingFunAvgExam.java create mode 100644 src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingFunExam.java create mode 100644 src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingInExam11.java create mode 100644 src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingInitData.java create mode 100644 src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingInsertExam10.java create mode 100644 src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingJsonExam.java create mode 100644 src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingPaging.java create mode 100644 src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingPaging2.java create mode 100644 src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingPaging3.java create mode 100644 src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingPaging4.java create mode 100644 src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingPaging5.java create mode 100644 src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingPagingSort.java create mode 100644 src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingPagingSort2.java create mode 100644 src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingPagingSort2StringArray.java create mode 100644 src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingPagingSort3.java create mode 100644 src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingPagingSort4.java create mode 100644 src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingPagingSort5.java create mode 100644 src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingPagingSort6.java create mode 100644 src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingPagingSortStringArray.java create mode 100644 src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingSimpleExam.java create mode 100644 src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingSimpleExam1.java create mode 100644 src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingSimpleExam1_2.java create mode 100644 src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingSimpleExam3.java create mode 100644 src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingSimpleExam4.java create mode 100644 src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingSimpleExam4_2.java create mode 100644 src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingSimpleExam5.java create mode 100644 src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingSimpleExam6.java create mode 100644 src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingSimpleExam9.java create mode 100644 src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingSimpleExam9_1.java create mode 100644 src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingSimpleExam9_2.java create mode 100644 src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingUpdateExam.java create mode 100644 src/main/java/org/teasoft/exam/bee/osql/sharding/SuidRichExam.java create mode 100644 src/main/java/org/teasoft/exam/bee/osql/sharding/SuidRichExamReturnListStringArray.java create mode 100644 src/main/java/org/teasoft/exam/bee/osql/sharding/anno/Orders.java create mode 100644 src/main/java/org/teasoft/exam/bee/osql/sharding/anno/Orders2.java create mode 100644 src/main/java/org/teasoft/exam/bee/osql/sharding/anno/Orders3.java create mode 100644 src/main/java/org/teasoft/exam/bee/osql/sharding/anno/Orders4.java create mode 100644 src/main/java/org/teasoft/exam/bee/osql/sharding/anno/Orders_F.java create mode 100644 src/main/java/org/teasoft/exam/bee/osql/sharding/anno/ShardingSimpleExam10.java create mode 100644 src/main/java/org/teasoft/exam/bee/osql/sharding/anno/ShardingSimpleExam7.java create mode 100644 src/main/java/org/teasoft/exam/bee/osql/sharding/anno/ShardingSimpleExam7_1.java create mode 100644 src/main/java/org/teasoft/exam/bee/osql/sharding/anno/ShardingSimpleExam7_2.java create mode 100644 src/main/java/org/teasoft/exam/bee/osql/sharding/anno/ShardingSimpleExam8.java create mode 100644 src/main/java/org/teasoft/exam/bee/osql/sharding/anno/ShardingSimpleExam8_2.java create mode 100644 src/main/java/org/teasoft/exam/bee/osql/sharding/anno/ShardingSimpleExam8_3.java create mode 100644 src/main/java/org/teasoft/exam/bee/osql/sharding/anno/ShardingSimpleExam9.java create mode 100644 src/main/java/org/teasoft/exam/bee/osql/sharding/anno/UseJson.java create mode 100644 src/main/java/org/teasoft/exam/bee/osql/sharding/anno/UseJson2.java create mode 100644 src/main/java/org/teasoft/exam/bee/osql/sharding/anno/UseJson3.java create mode 100644 src/main/java/org/teasoft/exam/bee/osql/sharding/anno/UseJson4.java create mode 100644 src/main/java/org/teasoft/exam/bee/osql/sharding/anno/UseJson5.java create mode 100644 src/main/java/org/teasoft/exam/bee/osql/sharding/moretable/MoreTableExam.java create mode 100644 src/main/java/org/teasoft/exam/bee/osql/sharding/moretable/MoreTableExam11.java create mode 100644 src/main/java/org/teasoft/exam/bee/osql/sharding/moretable/MoreTableExam198.java create mode 100644 src/main/java/org/teasoft/exam/bee/osql/sharding/moretable/MoreTableFun.java create mode 100644 src/main/java/org/teasoft/exam/bee/osql/sharding/moretable/ShardingBatchInsert2.java create mode 100644 src/main/java/org/teasoft/exam/bee/osql/sharding/moretable/entity/Myorders.java create mode 100644 src/main/java/org/teasoft/exam/bee/osql/sharding/moretable/entity/Orders_F.java create mode 100644 src/main/java/org/teasoft/exam/bee/osql/sharding/moretable/entity/Ordersdetail.java create mode 100644 src/main/java/org/teasoft/exam/bee/osql/sharding/moretable/entity/Ordersdetail_F.java diff --git a/src/main/java/org/teasoft/exam/bee/osql/moretable/entity/Orders.java b/src/main/java/org/teasoft/exam/bee/osql/moretable/entity/Orders.java index 1e81e6c..657689f 100644 --- a/src/main/java/org/teasoft/exam/bee/osql/moretable/entity/Orders.java +++ b/src/main/java/org/teasoft/exam/bee/osql/moretable/entity/Orders.java @@ -33,7 +33,7 @@ public class Orders implements Serializable { } -/* private Long id; + private Long id; private String userid; private String name; private BigDecimal total; @@ -115,114 +115,6 @@ public class Orders implements Serializable { this.updatetime = updatetime; } - public String toString(){ - StringBuffer str=new StringBuffer(); - str.append("Orders["); - str.append("id=").append(id); - str.append(",userid=").append(userid); - str.append(",name=").append(name); - str.append(",total=").append(total); - str.append(",createtime=").append(createtime); - str.append(",remark=").append(remark); - str.append(",sequence=").append(sequence); - str.append(",abc=").append(abc); - str.append(",updatetime=").append(updatetime); - - if(user==null) - str.append(",user").append("=null"); - else - str.append(",").append(user.toString()); - - str.append("]"); - return str.toString(); - } - - */ - - - //SQLite - private Long id; - private String userid; - private String name; - private BigDecimal total; - private String createtime; - private String remark; - private String sequence; - private String abc; - private String updatetime; - - public Long getId() { - return id; - } - - public void setId(Long id) { - this.id = id; - } - - public String getUserid() { - return userid; - } - - public void setUserid(String userid) { - this.userid = userid; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public BigDecimal getTotal() { - return total; - } - - public void setTotal(BigDecimal total) { - this.total = total; - } - - public String getCreatetime() { - return createtime; - } - - public void setCreatetime(String createtime) { - this.createtime = createtime; - } - - public String getRemark() { - return remark; - } - - public void setRemark(String remark) { - this.remark = remark; - } - - public String getSequence() { - return sequence; - } - - public void setSequence(String sequence) { - this.sequence = sequence; - } - - public String getAbc() { - return abc; - } - - public void setAbc(String abc) { - this.abc = abc; - } - - public String getUpdatetime() { - return updatetime; - } - - public void setUpdatetime(String updatetime) { - this.updatetime = updatetime; - } - public String toString(){ StringBuffer str=new StringBuffer(); str.append("Orders["); @@ -243,5 +135,6 @@ public class Orders implements Serializable { str.append("]"); return str.toString(); - } + } + } \ No newline at end of file diff --git a/src/main/java/org/teasoft/exam/bee/osql/sharding/InitSameDsUtil.java b/src/main/java/org/teasoft/exam/bee/osql/sharding/InitSameDsUtil.java new file mode 100644 index 0000000..1c2b8af --- /dev/null +++ b/src/main/java/org/teasoft/exam/bee/osql/sharding/InitSameDsUtil.java @@ -0,0 +1,55 @@ +/* + * Copyright 2016-2022 the original author.All rights reserved. + * Kingstar(honeysoft@126.com) + * The license,see the LICENSE file. + */ + +package org.teasoft.exam.bee.osql.sharding; + +import java.sql.SQLException; +import java.util.HashMap; +import java.util.Map; + +import javax.sql.DataSource; + +import org.teasoft.honey.osql.core.BeeFactory; + +import com.alibaba.druid.pool.DruidDataSource; + +/** + * @author Kingstar + * @since 2.0 + */ +public class InitSameDsUtil { + + public static void initDS() { + try { + + DruidDataSource dataSource0; + dataSource0 = new DruidDataSource(); + dataSource0.setUrl("jdbc:mysql://localhost:3306/bee?characterEncoding=UTF-8&useSSL=false"); + dataSource0.setUsername("root"); + dataSource0.setPassword("123456"); + dataSource0.init(); + + DruidDataSource dataSource1; + dataSource1 = new DruidDataSource(); + dataSource1.setUrl("jdbc:mysql://localhost:3306/pro?characterEncoding=UTF-8&useSSL=false"); + dataSource1.setUsername("root"); + dataSource1.setPassword("123456"); + dataSource1.init(); + +// 以上数据源,也可以通过XML方式配置 +// (二十二)ORM框架Bee,Spring配置多数据源实例 +// https://blog.csdn.net/abckingaa/article/details/120956130 + Map dataSourceMap = new HashMap<>(); + dataSourceMap.put("ds0", dataSource0); + dataSourceMap.put("ds1", dataSource1); + BeeFactory.getInstance().setDataSourceMap(dataSourceMap); + + } catch (SQLException e) { + e.printStackTrace(); + } + } + +} diff --git a/src/main/java/org/teasoft/exam/bee/osql/sharding/MoreSQLFunction.java b/src/main/java/org/teasoft/exam/bee/osql/sharding/MoreSQLFunction.java new file mode 100644 index 0000000..0387392 --- /dev/null +++ b/src/main/java/org/teasoft/exam/bee/osql/sharding/MoreSQLFunction.java @@ -0,0 +1,81 @@ +/* + * Copyright 2016-2020 the original author.All rights reserved. + * Kingstar(honeysoft@126.com) + * The license,see the LICENSE file. + */ + +package org.teasoft.exam.bee.osql.sharding; + +import java.util.List; + +import org.teasoft.bee.osql.Condition; +import org.teasoft.bee.osql.FunctionType; +import org.teasoft.bee.osql.Op; +import org.teasoft.bee.osql.SuidRich; +import org.teasoft.honey.osql.core.BeeFactory; +import org.teasoft.honey.osql.core.ConditionImpl; +import org.teasoft.honey.osql.core.Logger; + +/** + * 同时查多个最值,若涉及分片,Bee框架不负责合并结果. + * 使用了sharding注解. + * @author Kingstar + * @since 2.0 + */ +public class MoreSQLFunction { + + private static SuidRich suidRich = BeeFactory.getHoneyFactory().getSuidRich(); + + public static void main(String[] args) { +// ShardingInitData.init(); + InitSameDsUtil.initDS(); + + test(); + } + + public static void test() { + testSQLFun(); + } + + private static void testSQLFun() { + Condition condition=new ConditionImpl(); + + condition +// .selectField("term,examno,subject") + .selectFun(FunctionType.MAX, "score","maxScore") + .selectFun(FunctionType.AVG, "score","avgScore") + .selectFun(FunctionType.MIN, "score","minScore"); + +// condition.op("classno", Op.eq, 1); + +// condition.op("status", Op.nq, "FIN"); //状态为还没关闭的,才能修改 + +// condition +// .groupBy("term,examno,subjectno,subject") +// .orderBy("term,examno,subjectno") +// ; + + Scores scores=new Scores(); +// String result=suidRich.selectJson(scores, condition); +// Logger.info(result); + +//// List list=suidRich.select(scores, condition); + List list=suidRich.select(new ScoresResponse(), condition); + for (int i = 0; i < list.size(); i++) { + Logger.info(list.get(i).toString()); + } + +// List listString=suidRich.selectString(scores, condition); +// String str[]; +// for (int i = 0; i < listString.size(); i++) { +// str=listString.get(i); +// String rowStr=""; +// for (int j = 0; j < str.length; j++) { +// rowStr+=str[j]+" "; +// } +// Logger.info(rowStr); +// } + + } + +} diff --git a/src/main/java/org/teasoft/exam/bee/osql/sharding/Orders.java b/src/main/java/org/teasoft/exam/bee/osql/sharding/Orders.java new file mode 100644 index 0000000..d60a348 --- /dev/null +++ b/src/main/java/org/teasoft/exam/bee/osql/sharding/Orders.java @@ -0,0 +1,121 @@ +package org.teasoft.exam.bee.osql.sharding; + +import java.io.Serializable; +import java.math.BigDecimal; + +/** + * @author Honey + * Create on 2022-08-23 23:31:36 + */ +public class Orders implements Serializable { + + private static final long serialVersionUID = 1596710362247L; + + private Long id; + private Long userid; + private Long orderid; + private String name; + private BigDecimal total; + private String createtime; + private String remark; + private String sequence; + private String abc; + private String updatetime; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public Long getUserid() { + return userid; + } + + public void setUserid(Long userid) { + this.userid = userid; + } + + public Long getOrderid() { + return orderid; + } + + public void setOrderid(Long orderid) { + this.orderid = orderid; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public BigDecimal getTotal() { + return total; + } + + public void setTotal(BigDecimal total) { + this.total = total; + } + + public String getCreatetime() { + return createtime; + } + + public void setCreatetime(String createtime) { + this.createtime = createtime; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public String getSequence() { + return sequence; + } + + public void setSequence(String sequence) { + this.sequence = sequence; + } + + public String getAbc() { + return abc; + } + + public void setAbc(String abc) { + this.abc = abc; + } + + public String getUpdatetime() { + return updatetime; + } + + public void setUpdatetime(String updatetime) { + this.updatetime = updatetime; + } + + public String toString(){ + StringBuilder str=new StringBuilder(); + str.append("Orders1["); + str.append("id=").append(id); + str.append(",userid=").append(userid); + str.append(",orderid=").append(orderid); + str.append(",name=").append(name); + str.append(",total=").append(total); + str.append(",createtime=").append(createtime); + str.append(",remark=").append(remark); + str.append(",sequence=").append(sequence); + str.append(",abc=").append(abc); + str.append(",updatetime=").append(updatetime); + str.append("]"); + return str.toString(); + } +} \ No newline at end of file diff --git a/src/main/java/org/teasoft/exam/bee/osql/sharding/Orders0.java b/src/main/java/org/teasoft/exam/bee/osql/sharding/Orders0.java new file mode 100644 index 0000000..6deb334 --- /dev/null +++ b/src/main/java/org/teasoft/exam/bee/osql/sharding/Orders0.java @@ -0,0 +1,118 @@ +package org.teasoft.exam.bee.osql.sharding; + +import java.io.Serializable; +import java.math.BigDecimal; + +import org.teasoft.bee.osql.annotation.Ignore; +//import org.teasoft.bee.osql.annotation.customizable.MultiTenancy; + +/** +*@author Honey +*Create on 2022-08-21 12:41:06 +*/ + public class Orders0 implements Serializable { + + + private static final long serialVersionUID = 1593472489996L; + +// @MultiTenancy(dsRule = "id%2",dsName = "ds",tabRule = "id%3") + private Long id; + private String userid; + private String name; + private BigDecimal total; + private String createtime; + private String remark; + private String sequence; + private String abc; + @Ignore + private String updatetime; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getUserid() { + return userid; + } + + public void setUserid(String userid) { + this.userid = userid; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public BigDecimal getTotal() { + return total; + } + + public void setTotal(BigDecimal total) { + this.total = total; + } + + public String getCreatetime() { + return createtime; + } + + public void setCreatetime(String createtime) { + this.createtime = createtime; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public String getSequence() { + return sequence; + } + + public void setSequence(String sequence) { + this.sequence = sequence; + } + + public String getAbc() { + return abc; + } + + public void setAbc(String abc) { + this.abc = abc; + } + + public String getUpdatetime() { + return updatetime; + } + + public void setUpdatetime(String updatetime) { + this.updatetime = updatetime; + } + + public String toString(){ + StringBuffer str=new StringBuffer(); + str.append("Orders["); + str.append("id=").append(id); + str.append(",userid=").append(userid); + str.append(",name=").append(name); + str.append(",total=").append(total); + str.append(",createtime=").append(createtime); + str.append(",remark=").append(remark); + str.append(",sequence=").append(sequence); + str.append(",abc=").append(abc); + str.append(",updatetime=").append(updatetime); + str.append("]"); + return str.toString(); + } + +} \ No newline at end of file diff --git a/src/main/java/org/teasoft/exam/bee/osql/sharding/Orders_F.java b/src/main/java/org/teasoft/exam/bee/osql/sharding/Orders_F.java new file mode 100644 index 0000000..27fd5ad --- /dev/null +++ b/src/main/java/org/teasoft/exam/bee/osql/sharding/Orders_F.java @@ -0,0 +1,23 @@ +package org.teasoft.exam.bee.osql.sharding; + +/** + * Relative field name for Javabean Orders1 + * @author Honey + * Create on 2022-08-23 23:31:36 + */ +public class Orders_F { + + private Orders_F() {} + + public static final String id = "id"; + public static final String userid = "userid"; + public static final String orderid = "orderid"; + public static final String name = "name"; + public static final String total = "total"; + public static final String createtime = "createtime"; + public static final String remark = "remark"; + public static final String sequence = "sequence"; + public static final String abc = "abc"; + public static final String updatetime = "updatetime"; + public static final String ALL_NAMES = "id,userid,orderid,name,total,createtime,remark,sequence,abc,updatetime"; +} \ No newline at end of file diff --git a/src/main/java/org/teasoft/exam/bee/osql/sharding/Scores.java b/src/main/java/org/teasoft/exam/bee/osql/sharding/Scores.java new file mode 100644 index 0000000..f18e960 --- /dev/null +++ b/src/main/java/org/teasoft/exam/bee/osql/sharding/Scores.java @@ -0,0 +1,222 @@ +/* + * Copyright 2016-2021 the original author.All rights reserved. + * Kingstar(aiteasoft@163.com) + * The license,see the LICENSE file. + */ + +package org.teasoft.exam.bee.osql.sharding; + +import java.io.Serializable; +import java.sql.Timestamp; + +import org.teasoft.bee.osql.annotation.Sharding; + +/** + * @author AiTeaSoft.com + * @since 1.1 + * Create on 2021-01-18 18:29:15 + */ +public class Scores implements Serializable { + + private static final long serialVersionUID = 1593489256054L; + + + private Long id; + @Sharding(appointDS="ds0",tabRule = "classno %2") + private String classno; + private String term; + private String examno; + private String subjectno; + private String subject; + private String stuno; + private String name; + private String teacherno; + private String teachername; + private Double score; + private String creater; + private Timestamp createtime; + private String updater; + private Timestamp updatetime; + private String remark; + private String ext1; + private String status; + private String schoolno; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getClassno() { + return classno; + } + + public void setClassno(String classno) { + this.classno = classno; + } + + public String getTerm() { + return term; + } + + public void setTerm(String term) { + this.term = term; + } + + public String getExamno() { + return examno; + } + + public void setExamno(String examno) { + this.examno = examno; + } + + public String getSubjectno() { + return subjectno; + } + + public void setSubjectno(String subjectno) { + this.subjectno = subjectno; + } + + public String getSubject() { + return subject; + } + + public void setSubject(String subject) { + this.subject = subject; + } + + public String getStuno() { + return stuno; + } + + public void setStuno(String stuno) { + this.stuno = stuno; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getTeacherno() { + return teacherno; + } + + public void setTeacherno(String teacherno) { + this.teacherno = teacherno; + } + + public String getTeachername() { + return teachername; + } + + public void setTeachername(String teachername) { + this.teachername = teachername; + } + + public Double getScore() { + return score; + } + + public void setScore(Double score) { + this.score = score; + } + + public String getCreater() { + return creater; + } + + public void setCreater(String creater) { + this.creater = creater; + } + + public Timestamp getCreatetime() { + return createtime; + } + + public void setCreatetime(Timestamp createtime) { + this.createtime = createtime; + } + + public String getUpdater() { + return updater; + } + + public void setUpdater(String updater) { + this.updater = updater; + } + + public Timestamp getUpdatetime() { + return updatetime; + } + + public void setUpdatetime(Timestamp updatetime) { + this.updatetime = updatetime; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public String getExt1() { + return ext1; + } + + public void setExt1(String ext1) { + this.ext1 = ext1; + } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } + + public String getSchoolno() { + return schoolno; + } + + public void setSchoolno(String schoolno) { + this.schoolno = schoolno; + } + + public String toString(){ + StringBuffer str=new StringBuffer(); + str.append("Scores["); + str.append("id=").append(id); + str.append(",classno=").append(classno); + str.append(",term=").append(term); + str.append(",examno=").append(examno); + str.append(",subjectno=").append(subjectno); + str.append(",subject=").append(subject); + str.append(",stuno=").append(stuno); + str.append(",name=").append(name); + str.append(",teacherno=").append(teacherno); + str.append(",teachername=").append(teachername); + str.append(",score=").append(score); + str.append(",creater=").append(creater); + str.append(",createtime=").append(createtime); + str.append(",updater=").append(updater); + str.append(",updatetime=").append(updatetime); + str.append(",remark=").append(remark); + str.append(",ext1=").append(ext1); + str.append(",status=").append(status); + str.append(",schoolno=").append(schoolno); + str.append("]"); + return str.toString(); + } +} \ No newline at end of file diff --git a/src/main/java/org/teasoft/exam/bee/osql/sharding/ScoresResponse.java b/src/main/java/org/teasoft/exam/bee/osql/sharding/ScoresResponse.java new file mode 100644 index 0000000..f4fb124 --- /dev/null +++ b/src/main/java/org/teasoft/exam/bee/osql/sharding/ScoresResponse.java @@ -0,0 +1,103 @@ +/* + * Copyright 2016-2020 the original author.All rights reserved. + * Kingstar(honeysoft@126.com) + * The license,see the LICENSE file. + */ + +package org.teasoft.exam.bee.osql.sharding; + +import java.io.Serializable; + +import org.teasoft.bee.osql.annotation.Sharding; +import org.teasoft.bee.osql.annotation.Table; + +/** + * @author Kingstar + * @since 2.0 + */ +@Table("Scores") +public class ScoresResponse implements Serializable { + + private static final long serialVersionUID = 1593489256055L; + + //the field name same as Scores + @Sharding(appointDS="ds0",tabRule = "classno %2") + private String classno; + private String term; + private String examno; + private String subject; + private Double score; + + //the field name define in Condition + private Double maxScore; + private Double avgScore; + private Double minScore; + + + public String getClassno() { + return classno; + } + public void setClassno(String classno) { + this.classno = classno; + } + public String getTerm() { + return term; + } + public void setTerm(String term) { + this.term = term; + } + public String getExamno() { + return examno; + } + public void setExamno(String examno) { + this.examno = examno; + } + public String getSubject() { + return subject; + } + public void setSubject(String subject) { + this.subject = subject; + } + + public Double getScore() { + return score; + } + public void setScore(Double score) { + this.score = score; + } + public Double getMaxScore() { + return maxScore; + } + public void setMaxScore(Double maxScore) { + this.maxScore = maxScore; + } + public Double getAvgScore() { + return avgScore; + } + public void setAvgScore(Double avgScore) { + this.avgScore = avgScore; + } + public Double getMinScore() { + return minScore; + } + public void setMinScore(Double minScore) { + this.minScore = minScore; + } + + + public String toString(){ + StringBuffer str=new StringBuffer(); + str.append("ScoresResponse["); + str.append("classno=").append(classno); + str.append(",term=").append(term); + str.append(",examno=").append(examno); + str.append(",subject=").append(subject); + str.append(",score=").append(score); + str.append(",maxScore=").append(maxScore); + str.append(",avgScore=").append(avgScore); + str.append(",minScore=").append(minScore); + str.append("]"); + return str.toString(); + } + +} diff --git a/src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingBatchInsert2.java b/src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingBatchInsert2.java new file mode 100644 index 0000000..c5be37c --- /dev/null +++ b/src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingBatchInsert2.java @@ -0,0 +1,59 @@ +/* + * Copyright 2016-2019 the original author.All rights reserved. + * Kingstar(honeysoft@126.com) + * The license,see the LICENSE file. + */ + +package org.teasoft.exam.bee.osql.sharding; + +import java.math.BigDecimal; + +import org.teasoft.bee.osql.SuidRich; +import org.teasoft.honey.osql.core.BeeFactory; +import org.teasoft.honey.osql.core.Logger; + +/** + * 批量插入的分片 + * @author Kingstar + * @since 2.0 + */ +public class ShardingBatchInsert2 { + + private static SuidRich suidRich = BeeFactory.getHoneyFactory().getSuidRich(); + + public static void main(String[] args) { + + ShardingInitData.init(); // 分片 + InitSameDsUtil.initDS(); + + test(); + } + + public static void test() { + + int SIZE=20; + + Orders[] ordersArray = new Orders[SIZE]; + for (int i = 0; i < SIZE; i++) { + Orders orders = new Orders(); + orders.setUserid((long) i); + orders.setOrderid((long) i); + orders.setTotal(new BigDecimal(91 + i)); + orders.setRemark("testOneTime" + i); + ordersArray[i] = orders; + } + int insertArray = suidRich.insert(ordersArray, 3, "id,createtime,updatetime");// batch insert + Logger.info(insertArray); + +// int r=0; +// long t1=System.currentTimeMillis(); +// for (int i = 0; i < 1000; i++) { +// int b=suidRich.insert(ordersArray, 3, "id,createtime,updatetime");// batch insert +// r+=b; +// } +// long t2=System.currentTimeMillis(); +// System.out.println("用时:"+(t2-t1)); +// Logger.info(r); + } + +} diff --git a/src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingBatchInsertExam.java b/src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingBatchInsertExam.java new file mode 100644 index 0000000..47052b4 --- /dev/null +++ b/src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingBatchInsertExam.java @@ -0,0 +1,106 @@ +/* + * Copyright 2016-2019 the original author.All rights reserved. + * Kingstar(honeysoft@126.com) + * The license,see the LICENSE file. + */ + +package org.teasoft.exam.bee.osql.sharding; + +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.List; + +import org.teasoft.bee.osql.SuidRich; +import org.teasoft.honey.osql.core.BeeFactory; +import org.teasoft.honey.osql.core.Logger; + +/** + * 批量插入的分片 + * @author Kingstar + * @since 2.0 + */ +public class ShardingBatchInsertExam { + + private static SuidRich suidRich = BeeFactory.getHoneyFactory().getSuidRich(); + + public static SuidRich getSuidRich() { + return suidRich; + } + + public static void setSuidRich(SuidRich suidRich) { + ShardingBatchInsertExam.suidRich = suidRich; + } + + public static void main(String[] args) { + + ShardingInitData.init(); //分片 + InitSameDsUtil.initDS(); + + test(); + } + + public static void test() { + + + //test batch insert + Orders orders0 = new Orders(); + orders0.setId(1004L); + orders0.setUserid(0L); + orders0.setOrderid(0L); + orders0.setTotal(new BigDecimal(91)); + orders0.setRemark("testOneTime"); + + Orders orders1 = new Orders(); + orders1.setId(1005L); +// orders1.setUserid(0L); + orders1.setOrderid(4L); + orders1.setRemark("testOneTime"); + orders1.setTotal(new BigDecimal(20)); + + Orders orders2 = new Orders(); + orders2.setId(1006L); + orders2.setUserid(5L); + orders2.setOrderid(4L); + orders2.setRemark("testOneTime"); + orders2.setTotal(new BigDecimal(23)); + + Orders[] ordersArray = new Orders[3]; + ordersArray[0] = orders0; + ordersArray[1] = orders1; + ordersArray[2] = orders2; + + int insertArray = suidRich.insert(ordersArray, 2, "datetime");//batch insert + Logger.info(insertArray); + + + /* orders0.setId(1007L); + orders1.setId(1008L); + orders2.setId(1009L); + // int insertArray2=suidRich.insert(ordersArray,"id,datetime");//batch insert + int insertArray2 = suidRich.insert(ordersArray, "datetime");//batch insert + Logger.info(insertArray2); + + orders0.setId(10010L); + orders1.setId(10011L); + orders2.setId(10012L); + List list = new ArrayList<>(); + list.add(orders0); + list.add(orders1); + list.add(orders2); + int insertList = suidRich.insert(list, "datetime");//batch insert List + Logger.info(insertList);*/ + +// Orders exampleField = new Orders(); +// exampleField.setUserid(0L); +// // select some fields +// List selectSomeField = suidRich.select(exampleField, "name,total"); //select Some Field +// Logger.info(selectSomeField.size() + ""); + + + + + } + + + +} diff --git a/src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingDeleteExam.java b/src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingDeleteExam.java new file mode 100644 index 0000000..91858c8 --- /dev/null +++ b/src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingDeleteExam.java @@ -0,0 +1,74 @@ + +package org.teasoft.exam.bee.osql.sharding; + +import org.teasoft.bee.osql.Condition; +import org.teasoft.bee.osql.Op; +import org.teasoft.bee.osql.SuidRich; +import org.teasoft.honey.osql.core.Logger; +import org.teasoft.honey.osql.shortcut.BF; + +/** + * Delete Sharding.Delete的分片 + * @author Kingstar + * @since 2.0 + * + */ +public class ShardingDeleteExam { + + public static void main(String[] args) { + + ShardingInitData.init(); + InitSameDsUtil.initDS(); + + SuidRich suidRich=BF.getSuidRich(); //1 + + //全域 + Orders orders=new Orders(); + orders.setRemark("testOneTime13"); + int delNum=suidRich.delete(orders); + Logger.info("-----------删除的记录数:"+delNum); + + //一表一库 + Orders orders2=new Orders(); + orders2.setOrderid(1L); + int delNum2=suidRich.delete(orders2); + Logger.info("-----------删除的记录数:"+delNum2); + + //一库两表 + Orders orders3=new Orders(); + orders3.setOrderid(1L); + Condition condition3=BF.getCondition(); + condition3 + .or() + .op(Orders_F.orderid, Op.eq, 2L); + int delNum3=suidRich.delete(orders3,condition3); + Logger.info("-----------删除的记录数:"+delNum3); + + //一库一表, condition4无分片 + Orders orders4=new Orders(); + orders4.setOrderid(1L); + Condition condition4=BF.getCondition(); +// condition4 +// .or() +// .op(Orders_F.orderid, Op.eq, 2L); + int delNum4=suidRich.delete(orders4,condition4); + Logger.info("-----------删除的记录数:"+delNum4); + + //多库多表 + Orders orders5=new Orders(); + orders5.setOrderid(2L); + Condition condition5=BF.getCondition(); + condition5 + .or() + .op(Orders_F.orderid, Op.eq, 9L); + int delNum5=suidRich.delete(orders5,condition5); + Logger.info("-----------删除的记录数:"+delNum5); + + //测试删除整个表的数据. + //bee.osql.notDeleteWholeRecords=true 设置了为true,测控制不给删除. + Orders orders6=new Orders(); + int delNum6=suidRich.delete(orders6); + Logger.info("-----------删除的记录数:"+delNum6); + + } +} diff --git a/src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingFunAvgExam.java b/src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingFunAvgExam.java new file mode 100644 index 0000000..be15ff0 --- /dev/null +++ b/src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingFunAvgExam.java @@ -0,0 +1,52 @@ + +package org.teasoft.exam.bee.osql.sharding; + +import org.teasoft.bee.osql.Condition; +import org.teasoft.bee.osql.FunctionType; +import org.teasoft.bee.osql.Op; +import org.teasoft.bee.osql.SuidRich; +import org.teasoft.honey.osql.core.Logger; +import org.teasoft.honey.osql.shortcut.BF; + +/** + * Sharding AVG.求平均值的分片 + * @author Kingstar + * @since 2.0 + * + */ +public class ShardingFunAvgExam { + + public static void main(String[] args) { + + ShardingInitData.init(); + InitSameDsUtil.initDS(); + + SuidRich suidRich=BF.getSuidRich(); //1 + Orders orders=new Orders(); + + + //全域查询,分片 + String avg1=suidRich.selectWithFun(orders, FunctionType.AVG, Orders_F.total); + Logger.info("-------------avg1:"+avg1); + Logger.info("-------------"); + + //一库一表, 不用分片 + Condition funCondition =BF.getCondition(); + funCondition.op(Orders_F.orderid, Op.eq, 2L); + String avg2=suidRich.selectWithFun(orders, FunctionType.AVG, Orders_F.total, funCondition); + Logger.info("-------------avg2:"+avg2); + Logger.info("-------------"); + + //一库多表,要分片. + Condition funCondition3 =BF.getCondition(); + funCondition3 + .op(Orders_F.orderid, Op.eq, 2L) + .or() + .op(Orders_F.orderid, Op.eq, 1L) + ; + String avg3=suidRich.selectWithFun(orders, FunctionType.AVG, Orders_F.total, funCondition3); + Logger.info("-------------avg3:"+avg3); + Logger.info("-------------"); + + } +} diff --git a/src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingFunExam.java b/src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingFunExam.java new file mode 100644 index 0000000..3d7da64 --- /dev/null +++ b/src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingFunExam.java @@ -0,0 +1,104 @@ + +package org.teasoft.exam.bee.osql.sharding; + +import org.teasoft.bee.osql.Condition; +import org.teasoft.bee.osql.FunctionType; +import org.teasoft.bee.osql.Op; +import org.teasoft.bee.osql.SuidRich; +import org.teasoft.honey.osql.core.Logger; +import org.teasoft.honey.osql.core.StringConst; +import org.teasoft.honey.osql.shortcut.BF; + +/** + * MAX("max"),MIN("min"),SUM("sum"),AVG("avg"),COUNT("count") + * 函数使用的分片示例. + * //求平均值的分片,要特殊处理.详情可看ShardingExamFunAvg.java + * @author Kingstar + * @since 2.0 + * + */ +public class ShardingFunExam { + + public static void main(String[] args) { + + ShardingInitData.init(); + InitSameDsUtil.initDS(); + + SuidRich suidRich=BF.getSuidRich(); //1 + Orders orders1=new Orders(); + +// orders1.setUserid(6L); +// orders1.setOrderid(8L); +// suidRich.insert(orders1); + + Condition funCondition =BF.getCondition(); + funCondition.op(Orders_F.orderid, Op.eq, 2L); + + String max=suidRich.selectWithFun(orders1, FunctionType.MAX, "id"); + Logger.info("-------------max:"+max); + +// Object ojb=OneTimeParameter.getAttribute(StringConst.Route_EC); +// System.out.println(ojb); + + +/* String min=suidRich.selectWithFun(orders1, FunctionType.MIN, "id"); + Logger.info("-------------min:"+min); + + min=suidRich.selectWithFun(orders1, FunctionType.MIN, "id"); //测试缓存 + Logger.info("-------------min:"+min); + + + + String maxWithCondtion=suidRich.selectWithFun(orders1, FunctionType.MAX, "total", funCondition); + Logger.info("-------------max:"+maxWithCondtion); + + + int count1=suidRich.count(orders1); + Logger.info("-------------count1:"+count1); + Logger.info("-------------"); + int count2=suidRich.count(orders1, funCondition); + Logger.info("-------------count2:"+count2); + Logger.info("-------------"); + + String sum1=suidRich.selectWithFun(orders1, FunctionType.SUM, Orders_F.total); + Logger.info("-------------sum1:"+sum1); + Logger.info("-------------"); + String sum2=suidRich.selectWithFun(orders1, FunctionType.SUM, Orders_F.total, funCondition); + Logger.info("-------------sum2:"+sum2); + Logger.info("-------------"); + + Condition funCondition2 =BF.getCondition(); + funCondition2 + .op(Orders_F.orderid, Op.eq, 2L) + .or() + .op(Orders_F.orderid, Op.eq, 1L) + ; + + int count3=suidRich.count(orders1, funCondition2); + Logger.info("-------------count3:"+count3); + Logger.info("-------------"); + + count3=suidRich.count(orders1, funCondition2); //test cache + Logger.info("-------------count3:"+count3); + Logger.info("-------------"); + + //求平均值的分片,要特殊处理. + String avg1=suidRich.selectWithFun(orders1, FunctionType.AVG, Orders_F.total); + Logger.info("-------------avg1:"+avg1); + Logger.info("-------------"); + String avg2=suidRich.selectWithFun(orders1, FunctionType.AVG, Orders_F.total, funCondition); + Logger.info("-------------avg2:"+avg2); + Logger.info("-------------"); + + Condition funCondition3 =BF.getCondition(); + funCondition3 + .op(Orders_F.orderid, Op.eq, 2L) + .or() + .op(Orders_F.orderid, Op.eq, 1L) + ; + String avg3=suidRich.selectWithFun(orders1, FunctionType.AVG, Orders_F.total, funCondition3); + Logger.info("-------------avg3:"+avg3); + Logger.info("-------------");*/ + + } +} diff --git a/src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingInExam11.java b/src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingInExam11.java new file mode 100644 index 0000000..18a8d0b --- /dev/null +++ b/src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingInExam11.java @@ -0,0 +1,47 @@ + +package org.teasoft.exam.bee.osql.sharding; + +import java.util.List; + +import org.teasoft.bee.osql.Condition; +import org.teasoft.bee.osql.Op; +import org.teasoft.bee.osql.Suid; +import org.teasoft.exam.comm.Printer; +import org.teasoft.honey.osql.shortcut.BF; + +/** + * 在Condtion使用in,产生分片 + * @author Kingstar + * @since 2.0 + * + */ +public class ShardingInExam11 { + + public static void main(String[] args) { + + ShardingInitData.init(); //注释掉,不注册有分片,就不会产生全域查询. + + InitSameDsUtil.initDS(); + + Suid suid=BF.getSuid(); //1 + Orders orders=new Orders(); +// orders.setRemark("Bee(ORM Framework)"); + + Long ordersId[]= {1L,2L}; + Condition condition=BF.getCondition(); + condition +// .op(Orders_F.orderid, Op.in, ordersId) + .op(Orders_F.orderid, Op.in, "1,2") + ; + + + List list=suid.select(orders,condition); + Printer.printList(list); + + System.out.println("--------------------:"); + + list=suid.select(orders,condition); + Printer.printList(list); + + } +} diff --git a/src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingInitData.java b/src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingInitData.java new file mode 100644 index 0000000..ac13085 --- /dev/null +++ b/src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingInitData.java @@ -0,0 +1,82 @@ +/* + * Copyright 2016-2022 the original author.All rights reserved. + * Kingstar(honeysoft@126.com) + * The license,see the LICENSE file. + */ + +package org.teasoft.exam.bee.osql.sharding; + +import java.util.ArrayList; +import java.util.List; + +import org.teasoft.bee.sharding.ShardingBean; +import org.teasoft.exam.bee.osql.sharding.moretable.entity.Myorders; +import org.teasoft.exam.bee.osql.sharding.moretable.entity.Ordersdetail; +import org.teasoft.honey.sharding.config.ShardingConfig; + +/** + * @author Kingstar + * @author Kingstar + * @since 2.0 + */ +public class ShardingInitData { + + static { + +// InterceptorChainRegistry.addInterceptor(new CustomInterceptor()); //添加定制拦截器. + + ShardingBean shardingBean=new ShardingBean(); + shardingBean.setTabField("orderid"); + +// shardingBean.setTabRule("orderid%6"); +// shardingBean.setTabName("orders"); + +// shardingBean.setDsField(Orders_F.orderid); +// shardingBean.setDsRule("orderid%6/3"); +// shardingBean.setDsName("ds"); //数据源基本名称 + + shardingBean.setActualDataNodes("ds[0..1].orders[0..5]"); + + +// ShardingRegistry.register(Orders.class, shardingBean); +// ShardingConfig.addShardingBean(Orders.class, shardingBean); + + ShardingConfig.addShardingBean(Orders.class,new ShardingBean("ds[0..1].orders[0..5]", "orderid")); + + + ShardingBean shardingBean2=new ShardingBean(); + shardingBean2.setTabField("userid"); + shardingBean2.setTabRule("userid %6"); + + shardingBean2.setDsField("userid"); + shardingBean2.setDsRule("userid%6/3"); + shardingBean2.setDsName("ds"); //数据源基本名称 + + shardingBean2.setActualDataNodes("ds[0..1].myorders[0..5]"); +// ShardingRegistry.register(Myorders.class, shardingBean2); + ShardingConfig.addShardingBean(Myorders.class, shardingBean2); + + ShardingBean shardingBean3=new ShardingBean(); + shardingBean3.setTabField("userid"); + shardingBean3.setTabRule("userid %6"); + + shardingBean3.setDsField("userid"); + shardingBean3.setDsRule("userid%6/3"); + shardingBean3.setDsName("ds"); //数据源基本名称 +// shardingBean2.setActualDataNodes("ds[0..1].ordersdetail[0..5]");//test exception :shardingBean2 + shardingBean3.setActualDataNodes("ds[0..1].ordersdetail[0..5]"); +// ShardingRegistry.register(Ordersdetail.class, shardingBean3); + ShardingConfig.addShardingBean(Ordersdetail.class, shardingBean3); + + //最佳实践: + //只需要设置setActualDataNodes和表分片键(表分片字段). + //然后会根据表分片字段的值的余数,对应到[0..n]个表. + + List broadcastTabList =new ArrayList<>(); +// broadcastTabList.add("ordersdetail"); + ShardingConfig.addBroadcastTabList(broadcastTabList); + } + + public static void init() {} + +} diff --git a/src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingInsertExam10.java b/src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingInsertExam10.java new file mode 100644 index 0000000..e073259 --- /dev/null +++ b/src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingInsertExam10.java @@ -0,0 +1,41 @@ + +package org.teasoft.exam.bee.osql.sharding; + +import java.util.List; + +//import org.teasoft.bee.osql.Condition; +//import org.teasoft.bee.osql.Op; +import org.teasoft.bee.osql.Suid; +import org.teasoft.exam.comm.Printer; +import org.teasoft.honey.osql.shortcut.BF; + +/** + * 单条插入 + * 要有分片值,有分片值,会路由到具体的一库一表,在拦截器设置ds,tab.其它与不是sharding时的逻辑类似. + * 没有分片就会报错;只设置了ds,或都不设置tab,ds引发了全域操作,都会报异常。 + * @author Kingstar + * @since 2.0 + * + */ +public class ShardingInsertExam10 { + + public static void main(String[] args) { + + ShardingInitData.init(); + InitSameDsUtil.initDS(); + + Suid suid=BF.getSuid(); //1 + Orders orders1=new Orders(); + +// orders1.setUserid(6L); + orders1.setOrderid(8L); + suid.insert(orders1); + +// List list=suid.select(orders1); +// Printer.printList(list); +// System.out.println("--------------------:"); +// list=suid.select(orders1); +// Printer.printList(list); + + } +} diff --git a/src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingJsonExam.java b/src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingJsonExam.java new file mode 100644 index 0000000..d37c732 --- /dev/null +++ b/src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingJsonExam.java @@ -0,0 +1,45 @@ + +package org.teasoft.exam.bee.osql.sharding; + +import java.util.List; + +import org.teasoft.bee.osql.Condition; +import org.teasoft.bee.osql.Op; +import org.teasoft.bee.osql.SuidRich; +import org.teasoft.exam.comm.Printer; +import org.teasoft.honey.osql.core.Logger; +import org.teasoft.honey.osql.shortcut.BF; + +/** + * 分片值在javabean; + * 1)没设置分库键; 2)设置分库键; + * @author Kingstar + * @since 2.0 + * + */ +public class ShardingJsonExam { + + public static void main(String[] args) { + + ShardingInitData.init(); + InitSameDsUtil.initDS(); + + SuidRich suidRich=BF.getSuidRich(); //1 + Orders orders1=new Orders(); +// orders1.setName("Bee(ORM Framework)"); + orders1.setOrderid(1L); //分片值在javabean + + Condition condition=BF.getCondition(); + condition + .or() + .op(Orders_F.orderid, Op.eq, 2) + ; + +// List list=suidRich.select(orders1,condition); +// Printer.printList(list); +// System.out.println("--------------------:"); + + String json=suidRich.selectJson(orders1, condition); + Logger.info(json); + } +} diff --git a/src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingPaging.java b/src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingPaging.java new file mode 100644 index 0000000..3735c3e --- /dev/null +++ b/src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingPaging.java @@ -0,0 +1,64 @@ + +package org.teasoft.exam.bee.osql.sharding; + +import java.util.List; + +import org.teasoft.bee.osql.Condition; +import org.teasoft.bee.osql.Op; +import org.teasoft.bee.osql.Suid; +import org.teasoft.exam.comm.Printer; +import org.teasoft.honey.osql.shortcut.BF; +import org.teasoft.honey.sharding.ShardingUtil; + +/** + * 分页, 多库多表; 无排序 + * @author Kingstar + * @since 2.0 + */ +public class ShardingPaging { + + public static void main(String[] args) { + + ShardingInitData.init(); + InitSameDsUtil.initDS(); + test(ShardingUtil.firstRecordIndex()); //要先配置数据源,才能获取到. 从首条. +// test(2); //非首条 +// test(-1);//不使用start + } + + public static void test(int startIndex) { + + Suid suid=BF.getSuid(); //1 + Orders orders1=new Orders(); +// orders1.setName("Bee(ORM Framework)"); + + Condition condition=BF.getCondition(); + condition +// .op(Orders_F.userid, Op.eq, 0) + .lParentheses() + .op(Orders_F.orderid, Op.eq, 1) + .or() + .op(Orders_F.orderid, Op.eq, 2) + .or() + .op(Orders_F.orderid, Op.eq, 3) + .rParentheses() + ; + + condition +// .start(6) + .start(0) + .size(2); + + + //条件全在condition case 5 + List list=suid.select(orders1,condition); + Printer.printList(list); + System.out.println("--------------------:"); + list=suid.select(orders1,condition); + Printer.printList(list); + + + //全表查询, 分页; 批量插入, modify等 + + } +} diff --git a/src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingPaging2.java b/src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingPaging2.java new file mode 100644 index 0000000..02575aa --- /dev/null +++ b/src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingPaging2.java @@ -0,0 +1,64 @@ + +package org.teasoft.exam.bee.osql.sharding; + +import java.util.List; + +import org.teasoft.bee.osql.Condition; +import org.teasoft.bee.osql.Suid; +import org.teasoft.exam.comm.Printer; +import org.teasoft.honey.osql.shortcut.BF; +import org.teasoft.honey.sharding.ShardingUtil; + +/** + * 分页,全域查询;无排序,无分片 + * DB使用id排序?? 但合并后的id未必是有序的. 而且每次子查询的顺序不一样,可能会导致不同的结果.所以要加一个主键排序. + * 若查询的列,没有查主键列,该如何?? 使用串行查询。 + * @author Kingstar + * @since 2.0 + * + */ +public class ShardingPaging2 { + + public static void main(String[] args) { + + ShardingInitData.init(); + InitSameDsUtil.initDS(); + test(ShardingUtil.firstRecordIndex()); //要先配置数据源,才能获取到. + test(2); + test(-1); + } + + public static void test(int startIndex) { + + Suid suid=BF.getSuid(); //1 + Orders orders1=new Orders(); +// orders1.setName("Bee(ORM Framework)"); + + Condition condition=BF.getCondition(); +// condition +//// .op(Orders_F.userid, Op.eq, 0) +// .lParentheses() +// .op(Orders_F.orderid, Op.eq, 1) +// .or() +// .op(Orders_F.orderid, Op.eq, 2) +// .or() +// .op(Orders_F.orderid, Op.eq, 3) +// .rParentheses() +// ; + + //全域查询 + condition +// .start(2) //不是首页开始. +// .start(0) //从首页开始 + .start(startIndex) + .size(3); + + + //条件全在condition case 5 + List list=suid.select(orders1,condition); + Printer.printList(list); + System.out.println("--------------------:"); + list=suid.select(orders1,condition); + Printer.printList(list); + } +} diff --git a/src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingPaging3.java b/src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingPaging3.java new file mode 100644 index 0000000..4b21389 --- /dev/null +++ b/src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingPaging3.java @@ -0,0 +1,65 @@ + +package org.teasoft.exam.bee.osql.sharding; + +import java.util.List; + +import org.teasoft.bee.osql.Condition; +import org.teasoft.bee.osql.Op; +import org.teasoft.bee.osql.Suid; +import org.teasoft.exam.comm.Printer; +import org.teasoft.honey.osql.shortcut.BF; +import org.teasoft.honey.sharding.ShardingUtil; + +/** + * 分页, 同库多表; 无排序 + * 使用union all改写,不用担心无排序的影响. + * @author Kingstar + * @since 2.0 + * + */ +public class ShardingPaging3 { + + public static void main(String[] args) { + + ShardingInitData.init(); + InitSameDsUtil.initDS(); + test(ShardingUtil.firstRecordIndex()); //要先配置数据源,才能获取到. +// test(2); +// test(-1); + } + + public static void test(int startIndex) { + + Suid suid=BF.getSuid(); //1 + Orders orders1=new Orders(); +// orders1.setName("Bee(ORM Framework)"); + + Condition condition=BF.getCondition(); + condition +// .op(Orders_F.userid, Op.eq, 0) + .lParentheses() + .op(Orders_F.orderid, Op.eq, 1) + .or() + .op(Orders_F.orderid, Op.eq, 2) + .or() + .op(Orders_F.orderid, Op.eq, 0) + .rParentheses() + ; + + condition +// .start(1) //不是首页开始. +// .start(0) //从首页开始 + + .start(startIndex) + .size(2); + + + //条件全在condition case 5 + List list=suid.select(orders1,condition); + Printer.printList(list); + System.out.println("--------------------:"); + list=suid.select(orders1,condition); + Printer.printList(list); + + } +} diff --git a/src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingPaging4.java b/src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingPaging4.java new file mode 100644 index 0000000..c49c53b --- /dev/null +++ b/src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingPaging4.java @@ -0,0 +1,63 @@ + +package org.teasoft.exam.bee.osql.sharding; + +import java.util.List; + +import org.teasoft.bee.osql.Condition; +import org.teasoft.bee.osql.Op; +import org.teasoft.bee.osql.Suid; +import org.teasoft.exam.comm.Printer; +import org.teasoft.honey.osql.shortcut.BF; +import org.teasoft.honey.sharding.ShardingUtil; + +/** + * 分页, 一库一表; 无排序 + * 不用分片,走单分支 + * @author Kingstar + * @since 2.0 + * + */ +public class ShardingPaging4 { + + public static void main(String[] args) { + + ShardingInitData.init(); + InitSameDsUtil.initDS(); + test(ShardingUtil.firstRecordIndex()); //要先配置数据源,才能获取到. + test(2); + test(-1); + } + + public static void test(int startIndex) { + + Suid suid=BF.getSuid(); //1 + Orders orders1=new Orders(); +// orders1.setName("Bee(ORM Framework)"); + + Condition condition=BF.getCondition(); + condition + .lParentheses() + .op(Orders_F.orderid, Op.eq, 1) +// .or() +// .op(Orders_F.orderid, Op.eq, 2) +// .or() +// .op(Orders_F.orderid, Op.eq, 0) + .rParentheses() + ; + + condition +// .start(1) //不是首页开始. +// .start(0) //从首页开始 + .start(startIndex) + .size(2); + + + //条件全在condition case 5 + List list=suid.select(orders1,condition); + Printer.printList(list); + System.out.println("--------------------:"); + list=suid.select(orders1,condition); + Printer.printList(list); + + } +} diff --git a/src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingPaging5.java b/src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingPaging5.java new file mode 100644 index 0000000..7666120 --- /dev/null +++ b/src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingPaging5.java @@ -0,0 +1,77 @@ + +package org.teasoft.exam.bee.osql.sharding; + +import java.util.List; + +import org.teasoft.bee.osql.Condition; +import org.teasoft.bee.osql.Op; +import org.teasoft.bee.osql.Suid; +import org.teasoft.bee.sharding.ShardingBean; +import org.teasoft.exam.comm.Printer; +import org.teasoft.honey.osql.shortcut.BF; +import org.teasoft.honey.sharding.ShardingUtil; +import org.teasoft.honey.sharding.config.ShardingConfig; +import org.teasoft.honey.sharding.config.ShardingRegistry; + +/** + * 分页, 多库多表; 无排序 + * 分片字段是String类型 + * @author Kingstar + * @since 2.0 + */ +public class ShardingPaging5 { + + public static void main(String[] args) { + + InitSameDsUtil.initDS(); + +// ShardingInitData.init(); + ShardingBean shardingBean=new ShardingBean(); + shardingBean.setTabField("remark"); + shardingBean.setActualDataNodes("ds[0..1].orders[0..5]"); +// ShardingRegistry.register(Orders.class, shardingBean); + ShardingConfig.addShardingBean(Orders.class, shardingBean); + + test(ShardingUtil.firstRecordIndex()); //要先配置数据源,才能获取到. 从首条. +// test(2); //非首条 +// test(-1);//不使用start + } + + public static void test(int startIndex) { + + Suid suid=BF.getSuid(); //1 + Orders orders1=new Orders(); +// orders1.setName("Bee(ORM Framework)"); + + Condition condition=BF.getCondition(); + condition +// .op(Orders_F.userid, Op.eq, 0) + .lParentheses() + .op(Orders_F.orderid, Op.eq, 1) + .or() + .op(Orders_F.orderid, Op.eq, 2) + .or() + .op(Orders_F.orderid, Op.eq, 4) + .rParentheses() + + .op(Orders_F.remark, Op.eq, "String类型分片值") + ; + + condition +// .start(6) + .start(0) + .size(2); + + + //条件全在condition case 5 + List list=suid.select(orders1,condition); + Printer.printList(list); + System.out.println("--------------------:"); + list=suid.select(orders1,condition); + Printer.printList(list); + + + //全表查询, 分页; 批量插入, modify等 + + } +} diff --git a/src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingPagingSort.java b/src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingPagingSort.java new file mode 100644 index 0000000..bf1df8e --- /dev/null +++ b/src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingPagingSort.java @@ -0,0 +1,72 @@ + +package org.teasoft.exam.bee.osql.sharding; + +import java.util.List; + +import org.teasoft.bee.osql.Condition; +import org.teasoft.bee.osql.Op; +import org.teasoft.bee.osql.OrderType; +import org.teasoft.bee.osql.Suid; +import org.teasoft.exam.comm.Printer; +import org.teasoft.honey.osql.shortcut.BF; +import org.teasoft.honey.sharding.ShardingUtil; + +/** + * 多库多表+ 排序+分页. + * @author Kingstar + * @since 2.0 + */ +public class ShardingPagingSort { + + public static void main(String[] args) { + + InitSameDsUtil.initDS(); + ShardingInitData.init(); + test(ShardingUtil.firstRecordIndex()); //要先配置数据源,才能获取到. + test(2); + test(-1); + } + + public static void test(int startIndex) { + + Suid suid=BF.getSuid(); //1 + Orders orders1=new Orders(); +// orders1.setName("Bee(ORM Framework)"); + + Condition condition=BF.getCondition(); + condition + .lParentheses() + .op(Orders_F.userid, Op.eq, 1) + .or() + .op(Orders_F.userid, Op.eq, 2) + .or() + .op(Orders_F.userid, Op.eq, 3) + .rParentheses() + .or() + .op(Orders_F.orderid, Op.eq, 3) + ; + + condition + .orderBy("id") +// .orderBy("userid", OrderType.DESC) + .orderBy("userid", OrderType.ASC) + ; + + condition +// .start(6) + .start(startIndex) + .size(3); + + + //条件全在condition case 5 + List list=suid.select(orders1,condition); + Printer.printList(list); + System.out.println("--------------------:"); + list=suid.select(orders1,condition); + Printer.printList(list); + + + //全表查询, 分页; 批量插入, modify等 + + } +} diff --git a/src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingPagingSort2.java b/src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingPagingSort2.java new file mode 100644 index 0000000..4d3ede3 --- /dev/null +++ b/src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingPagingSort2.java @@ -0,0 +1,72 @@ + +package org.teasoft.exam.bee.osql.sharding; + +import java.util.List; + +import org.teasoft.bee.osql.Condition; +import org.teasoft.bee.osql.Op; +import org.teasoft.bee.osql.OrderType; +import org.teasoft.bee.osql.Suid; +import org.teasoft.exam.comm.Printer; +import org.teasoft.honey.osql.shortcut.BF; +import org.teasoft.honey.sharding.ShardingUtil; + +/** + * 同库多个表 +分页 + 排序 + * @author Kingstar + * @since 2.0 + */ +public class ShardingPagingSort2 { + + public static void main(String[] args) { + + ShardingInitData.init(); + InitSameDsUtil.initDS(); + test(ShardingUtil.firstRecordIndex()); //要先配置数据源,才能获取到. + test(2); + test(-1); + } + + public static void test(int startIndex) { + + Suid suid=BF.getSuid(); //1 + Orders orders1=new Orders(); +// orders1.setName("Bee(ORM Framework)"); + + Condition condition=BF.getCondition(); + condition +// .op(Orders_F.userid, Op.eq, 0) + .lParentheses() + .op(Orders_F.orderid, Op.eq, 1) + .or() + .op(Orders_F.orderid, Op.eq, 2) + .or() + .op(Orders_F.orderid, Op.eq, 0) + .rParentheses() + ; + + condition + .orderBy("id") + .orderBy("userid", OrderType.DESC) +// .orderBy("userid", OrderType.ASC) + ; + + condition +// .start(6) +// .start(1) + .start(startIndex) + .size(2); + + + //条件全在condition case 5 + List list=suid.select(orders1,condition); + Printer.printList(list); + System.out.println("--------------------:"); + list=suid.select(orders1,condition); + Printer.printList(list); + + + //全表查询, 分页; 批量插入, modify等 + + } +} diff --git a/src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingPagingSort2StringArray.java b/src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingPagingSort2StringArray.java new file mode 100644 index 0000000..ef73885 --- /dev/null +++ b/src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingPagingSort2StringArray.java @@ -0,0 +1,73 @@ + +package org.teasoft.exam.bee.osql.sharding; + +import java.util.List; + +import org.teasoft.bee.osql.Condition; +import org.teasoft.bee.osql.Op; +import org.teasoft.bee.osql.OrderType; +import org.teasoft.bee.osql.SuidRich; +import org.teasoft.exam.comm.Printer; +import org.teasoft.honey.osql.shortcut.BF; +import org.teasoft.honey.sharding.ShardingUtil; + +/** + * 同库多个表 +分页 + 排序 + * List list=suidRich.selectString(orders1,condition); + * @author Kingstar + * @since 2.0 + */ +public class ShardingPagingSort2StringArray { + + public static void main(String[] args) { + + ShardingInitData.init(); + InitSameDsUtil.initDS(); + test(ShardingUtil.firstRecordIndex()); //要先配置数据源,才能获取到. + test(2); + test(-1); + } + + public static void test(int startIndex) { + + SuidRich suidRich=BF.getSuidRich(); //1 + Orders orders1=new Orders(); +// orders1.setName("Bee(ORM Framework)"); + + Condition condition=BF.getCondition(); + condition +// .op(Orders_F.userid, Op.eq, 0) + .lParentheses() + .op(Orders_F.orderid, Op.eq, 1) + .or() + .op(Orders_F.orderid, Op.eq, 2) + .or() + .op(Orders_F.orderid, Op.eq, 0) + .rParentheses() + ; + + condition + .orderBy("id") + .orderBy("userid", OrderType.DESC) +// .orderBy("userid", OrderType.ASC) + ; + + condition +// .start(6) +// .start(1) + .start(startIndex) + .size(2); + + + //条件全在condition case 5 + List list=suidRich.selectString(orders1,condition); + Printer.print(list); + System.out.println("--------------------:"); + list=suidRich.selectString(orders1,condition); + Printer.print(list); + + + //全表查询, 分页; 批量插入, modify等 + + } +} diff --git a/src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingPagingSort3.java b/src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingPagingSort3.java new file mode 100644 index 0000000..e00b97c --- /dev/null +++ b/src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingPagingSort3.java @@ -0,0 +1,57 @@ + +package org.teasoft.exam.bee.osql.sharding; + +import java.util.List; + +import org.teasoft.bee.osql.Condition; +import org.teasoft.bee.osql.Suid; +import org.teasoft.exam.comm.Printer; +import org.teasoft.honey.osql.shortcut.BF; +import org.teasoft.honey.sharding.ShardingUtil; + +/** + * 分页,全域查询;排序, 但无分片 + * @author Kingstar + * @since 2.0 + * + */ +public class ShardingPagingSort3 { + + public static void main(String[] args) { +// test(ShardingUtil.firstRecordIndex()); //要先配置数据源,才能获取到. +// test(2); + + ShardingInitData.init(); + InitSameDsUtil.initDS(); + test(ShardingUtil.firstRecordIndex()); //要先配置数据源,才能获取到. + test(2); + test(-1); + } + + public static void test(int startIndex) { +// ShardingInitData.init(); +// InitSameDsUtil.initDS(); + + Suid suid=BF.getSuid(); //1 + Orders orders1=new Orders(); +// orders1.setName("Bee(ORM Framework)"); + + Condition condition=BF.getCondition(); + condition.orderBy(Orders_F.id); + + //全域查询 + condition +// .start(2) //不是首页开始. +// .start(0) //从首页开始 + .start(startIndex) + .size(3); + + + //条件全在condition case 5 + List list=suid.select(orders1,condition); + Printer.printList(list); + System.out.println("--------------------:"); + list=suid.select(orders1,condition); + Printer.printList(list); + } +} diff --git a/src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingPagingSort4.java b/src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingPagingSort4.java new file mode 100644 index 0000000..ac4cd68 --- /dev/null +++ b/src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingPagingSort4.java @@ -0,0 +1,60 @@ + +package org.teasoft.exam.bee.osql.sharding; + +import java.util.List; + +import org.teasoft.bee.osql.Condition; +import org.teasoft.bee.osql.Op; +import org.teasoft.bee.osql.Suid; +import org.teasoft.exam.comm.Printer; +import org.teasoft.honey.osql.shortcut.BF; +import org.teasoft.honey.sharding.ShardingUtil; + +/** + * 分页, 一库一表; 无排序 + * 不用分片,走单分支 + * @author Kingstar + * @since 2.0 + * + */ +public class ShardingPagingSort4 { + + public static void main(String[] args) { + + ShardingInitData.init(); + InitSameDsUtil.initDS(); + test(ShardingUtil.firstRecordIndex()); //要先配置数据源,才能获取到. + test(2); + test(-1); + } + + public static void test(int startIndex) { + + Suid suid=BF.getSuid(); //1 + Orders orders1=new Orders(); + + Condition condition=BF.getCondition(); + condition + .lParentheses() + .op(Orders_F.userid, Op.eq, 1) + .rParentheses() + ; + + condition.orderBy(Orders_F.id); + + condition +// .start(1) //不是首页开始. +// .start(0) //从首页开始 + .start(startIndex) + .size(2); + + + //条件全在condition case 5 + List list=suid.select(orders1,condition); + Printer.printList(list); + System.out.println("--------------------:"); + list=suid.select(orders1,condition); + Printer.printList(list); + + } +} diff --git a/src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingPagingSort5.java b/src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingPagingSort5.java new file mode 100644 index 0000000..774db0a --- /dev/null +++ b/src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingPagingSort5.java @@ -0,0 +1,74 @@ + +package org.teasoft.exam.bee.osql.sharding; + +import java.util.List; + +import org.teasoft.bee.osql.Condition; +import org.teasoft.bee.osql.Op; +import org.teasoft.bee.osql.OrderType; +import org.teasoft.bee.osql.Suid; +import org.teasoft.exam.comm.Printer; +import org.teasoft.honey.osql.shortcut.BF; +import org.teasoft.honey.sharding.ShardingUtil; + +/** + * 同库多个表 +分页 + 排序 + * 没有分表键的值, 该如何??? + * 计算后,只有库名,那应该是查询库下的所有表. + * @author Kingstar + * @since 2.0 + */ +public class ShardingPagingSort5 { + + public static void main(String[] args) { + + ShardingInitData.init(); + InitSameDsUtil.initDS(); +// test(ShardingUtil.firstRecordIndex()); //要先配置数据源,才能获取到. +// test(2); + test(-1); + } + + public static void test(int startIndex) { + + Suid suid=BF.getSuid(); //1 + Orders orders1=new Orders(); +// orders1.setName("Bee(ORM Framework)"); + + Condition condition=BF.getCondition(); + condition +// .op(Orders_F.userid, Op.eq, 0) + .lParentheses() + .op(Orders_F.orderid, Op.eq, 1) + .or() + .op(Orders_F.orderid, Op.eq, 2) + .or() + .op(Orders_F.orderid, Op.eq, 0) + .rParentheses() + ; + + condition + .orderBy("id") + .orderBy("userid", OrderType.DESC) +// .orderBy("userid", OrderType.ASC) + ; + + condition +// .start(6) +// .start(1) + .start(startIndex) + .size(2); + + + //条件全在condition case 5 + List list=suid.select(orders1,condition); + Printer.printList(list); + System.out.println("--------------------:"); + list=suid.select(orders1,condition); + Printer.printList(list); + + + //全表查询, 分页; 批量插入, modify等 + + } +} diff --git a/src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingPagingSort6.java b/src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingPagingSort6.java new file mode 100644 index 0000000..af2b593 --- /dev/null +++ b/src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingPagingSort6.java @@ -0,0 +1,72 @@ + +package org.teasoft.exam.bee.osql.sharding; + +import java.util.List; + +import org.teasoft.bee.osql.Condition; +import org.teasoft.bee.osql.Op; +import org.teasoft.bee.osql.OrderType; +import org.teasoft.bee.osql.Suid; +import org.teasoft.exam.comm.Printer; +import org.teasoft.honey.osql.shortcut.BF; +import org.teasoft.honey.sharding.ShardingUtil; + +/** + * 同库多个表 +分页 + 排序 + * @author Kingstar + * @since 2.0 + */ +public class ShardingPagingSort6 { + + public static void main(String[] args) { + + ShardingInitData.init(); + InitSameDsUtil.initDS(); + test(ShardingUtil.firstRecordIndex()); //要先配置数据源,才能获取到. + test(2); + test(-1); + } + + public static void test(int startIndex) { + + Suid suid=BF.getSuid(); //1 + Orders orders1=new Orders(); +// orders1.setName("Bee(ORM Framework)"); + + Condition condition=BF.getCondition(); + condition +// .op(Orders_F.userid, Op.eq, 0) + .lParentheses() + .op(Orders_F.orderid, Op.eq, 1) + .or() + .op(Orders_F.orderid, Op.eq, 2) + .or() + .op(Orders_F.orderid, Op.eq, 0) + .rParentheses() + ; + + condition + .orderBy("id") + .orderBy("userid", OrderType.DESC) +// .orderBy("userid", OrderType.ASC) + ; + + condition +// .start(6) +// .start(1) + .start(startIndex) + .size(2); + + + //条件全在condition case 5 + List list=suid.select(orders1,condition); + Printer.printList(list); + System.out.println("--------------------:"); + list=suid.select(orders1,condition); + Printer.printList(list); + + + //全表查询, 分页; 批量插入, modify等 + + } +} diff --git a/src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingPagingSortStringArray.java b/src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingPagingSortStringArray.java new file mode 100644 index 0000000..281a54b --- /dev/null +++ b/src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingPagingSortStringArray.java @@ -0,0 +1,73 @@ + +package org.teasoft.exam.bee.osql.sharding; + +import java.util.List; + +import org.teasoft.bee.osql.Condition; +import org.teasoft.bee.osql.Op; +import org.teasoft.bee.osql.OrderType; +import org.teasoft.bee.osql.SuidRich; +import org.teasoft.exam.comm.Printer; +import org.teasoft.honey.osql.shortcut.BF; +import org.teasoft.honey.sharding.ShardingUtil; + +/** + * 多库多表+ 排序+分页. + * List list=suidRich.selectString(orders1,condition); + * @author Kingstar + * @since 2.0 + */ +public class ShardingPagingSortStringArray { + + public static void main(String[] args) { + + ShardingInitData.init(); + InitSameDsUtil.initDS(); + test(ShardingUtil.firstRecordIndex()); //要先配置数据源,才能获取到. +// test(2); +// test(-1); + } + + public static void test(int startIndex) { + + SuidRich suidRich=BF.getSuidRich(); //1 + Orders orders1=new Orders(); +// orders1.setName("Bee(ORM Framework)"); + + Condition condition=BF.getCondition(); + condition + .lParentheses() + .op(Orders_F.userid, Op.eq, 1) + .or() + .op(Orders_F.userid, Op.eq, 2) + .or() + .op(Orders_F.userid, Op.eq, 3) + .rParentheses() + .or() + .op(Orders_F.orderid, Op.eq, 3) + ; + + condition + .orderBy(Orders_F.id) +// .orderBy(Orders_F.userid, OrderType.DESC) + .orderBy(Orders_F.userid, OrderType.ASC) + ; + + condition +// .start(6) + .start(startIndex) + .size(5); + + + //条件全在condition case 5 + List list=suidRich.selectString(orders1,condition); + Printer.print(list); + System.out.println("--------------------:"); + list=suidRich.selectString(orders1,condition); + Printer.print(list); + + + //全表查询, 分页; 批量插入, modify等 + + } +} diff --git a/src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingSimpleExam.java b/src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingSimpleExam.java new file mode 100644 index 0000000..9af9d70 --- /dev/null +++ b/src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingSimpleExam.java @@ -0,0 +1,88 @@ + +package org.teasoft.exam.bee.osql.sharding; + +import java.util.List; + +import org.teasoft.bee.osql.Condition; +import org.teasoft.bee.osql.Op; +import org.teasoft.bee.osql.Suid; +import org.teasoft.exam.comm.Printer; +import org.teasoft.honey.osql.shortcut.BF; + +/** + * 条件全在condition(javabean没有设置) case 5 + * @author Kingstar + * @since 2.0 + * + */ +public class ShardingSimpleExam { + + public static void main(String[] args) { + + ShardingInitData.init(); + InitSameDsUtil.initDS(); + + Suid suid=BF.getSuid(); //1 + Orders orders1=new Orders(); +// orders1.setName("Bee(ORM Framework)"); + + Condition condition=BF.getCondition(); + condition + .op(Orders_F.userid, Op.eq, 0) + .lParentheses() + .op(Orders_F.orderid, Op.eq, 1) + .or() + .op(Orders_F.orderid, Op.eq, 2) +// .or() +// .op(Orders_F.orderid, Op.eq, 3) + .rParentheses() + ; + + //条件全在condition case 5 + List list=suid.select(orders1,condition); + Printer.printList(list); + System.out.println("--------------------:"); + list=suid.select(orders1,condition); + Printer.printList(list); + +// 条件在javabean和condition +// System.out.println("-----------------条件在javabean和condition---"); +// orders1.setOrderid(1L); //分片值在javabean +//// orders1.setRemark("aaa"); +// list=suid.select(orders1,condition); +// System.out.println("结果:"); +// Printer.printList(list); +//// System.out.println("--------------------:"); +//// list=suid.select(orders1,condition); +//// Printer.printList(list); + +// 条件在javabean和condition; 比上一个查询多了一个查询条件; + Condition condition2=BF.getCondition(); + condition2 + .op(Orders_F.userid, Op.eq, 0) + .lParentheses() + .op(Orders_F.orderid, Op.eq, 1) + .or() + .op(Orders_F.orderid, Op.eq, 2) + .or() + .op(Orders_F.orderid, Op.eq, 0) //加多一个分片值. 变成3个子查询. 前两个子查询,要利用上缓存. 总查询不能用缓存. + //TODO 子查询不能利用上缓存; 因为sql没有拆分,是用总的sql,而总的sql不一样,sql key就不一样,就用不上缓存了. + .rParentheses() + ; + + System.out.println("--------------------:"); + list=suid.select(orders1,condition2); + Printer.printList(list); + System.out.println("--------------------:"); + list=suid.select(orders1,condition2); + Printer.printList(list); + +// 只是javabean有条件; 分是否有分片值 + //条件全在condition 分是否有分片值 +// 条件在javabean和condition 应该有四种 + //要能区分出,非一库一表分片, 是主线程,还是子线程; 主线程的话,缓存要加表列表(要排序);否则缓存不准确 + + //全表查询, 分页; 批量插入, modify等 + + } +} diff --git a/src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingSimpleExam1.java b/src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingSimpleExam1.java new file mode 100644 index 0000000..e92b606 --- /dev/null +++ b/src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingSimpleExam1.java @@ -0,0 +1,80 @@ + +package org.teasoft.exam.bee.osql.sharding; + +import java.util.List; + +import org.teasoft.bee.osql.Condition; +import org.teasoft.bee.osql.Op; +import org.teasoft.bee.osql.Suid; +import org.teasoft.exam.comm.Printer; +import org.teasoft.honey.osql.shortcut.BF; + +/** + * 条件全在condition+javabean设置的不是分片键 case 5 + * @author Kingstar + * @since 2.0 + * + */ +public class ShardingSimpleExam1 { + + public static void main(String[] args) { + + ShardingInitData.init(); + InitSameDsUtil.initDS(); + + Suid suid=BF.getSuid(); //1 + Orders orders1=new Orders(); + orders1.setAbc("Bee(ORM Framework)"); //javabean设置的不是分片键 + + Condition condition=BF.getCondition(); + condition + .op(Orders_F.userid, Op.eq, 0) + .lParentheses() + .op(Orders_F.orderid, Op.eq, 1) + .or() + .op(Orders_F.orderid, Op.eq, 2) +// .or() +// .op(Orders_F.orderid, Op.eq, 3) + .rParentheses() + ; + +// 条件全在condition+javabean没有设置 case 5 + List list=suid.select(orders1,condition); + Printer.printList(list); + System.out.println("--------------------:"); + list=suid.select(orders1,condition); + Printer.printList(list); + +// 条件在javabean和condition + System.out.println("-----------------条件在javabean和condition---"); + +// 条件在javabean和condition; 比上一个查询多了一个查询条件; + Condition condition2=BF.getCondition(); + condition2 + .op(Orders_F.userid, Op.eq, 0) + .lParentheses() + .op(Orders_F.orderid, Op.eq, 1) + .or() + .op(Orders_F.orderid, Op.eq, 2) + .or() + .op(Orders_F.orderid, Op.eq, 0) //加多一个分片值. 变成3个子查询. 前两个子查询,要利用上缓存. 总查询不能用缓存. + //TODO 子查询不能利用上缓存; 因为sql没有拆分,是用总的sql,而总的sql不一样,sql key就不一样,就用不上缓存了. + .rParentheses() + ; + + System.out.println("--------------------:"); + list=suid.select(orders1,condition2); + Printer.printList(list); + System.out.println("--------------------:"); + list=suid.select(orders1,condition2); + Printer.printList(list); + +// 只是javabean有条件; 分是否有分片值 + //条件全在condition 分是否有分片值 +// 条件在javabean和condition 应该有四种 + //要能区分出,非一库一表分片, 是主线程,还是子线程; 主线程的话,缓存要加表列表(要排序);否则缓存不准确 + + //全表查询, 分页; 批量插入, modify等 + + } +} diff --git a/src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingSimpleExam1_2.java b/src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingSimpleExam1_2.java new file mode 100644 index 0000000..1f83230 --- /dev/null +++ b/src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingSimpleExam1_2.java @@ -0,0 +1,89 @@ + +package org.teasoft.exam.bee.osql.sharding; + +import java.util.List; + +import org.teasoft.bee.osql.Condition; +import org.teasoft.bee.osql.Op; +import org.teasoft.bee.osql.Suid; +import org.teasoft.exam.comm.Printer; +import org.teasoft.honey.osql.shortcut.BF; + +/** + * 条件全在condition+javabean设置的是表分片键 case 5 + * 若用List存表,则两个地方设置的相同,会产生多余查询. + * [0, 0, 1, 2] 根据表列表,拆分子句就不准确. + * 使用无重复元素的List解决 + * @author Kingstar + * @since 2.0 + * + */ +public class ShardingSimpleExam1_2 { + + public static void main(String[] args) { + + ShardingInitData.init(); + InitSameDsUtil.initDS(); + + Suid suid=BF.getSuid(); //1 + Orders orders1=new Orders(); +// orders1.setAbc("Bee(ORM Framework)"); //javabean设置的不是分片键 + orders1.setOrderid(6L); //javabean设置的是表分片键 + + Condition condition=BF.getCondition(); + condition + .op(Orders_F.userid, Op.eq, 0) + .or() + .op(Orders_F.userid, Op.eq, 1) + .or() + .op(Orders_F.userid, Op.eq, 3) + .lParentheses() + .op(Orders_F.orderid, Op.eq, 1) + .or() + .op(Orders_F.orderid, Op.eq, 2) +// .or() +// .op(Orders_F.orderid, Op.eq, 3) + .rParentheses() + ; + +// 条件全在condition+javabean没有设置 case 5 + List list=suid.select(orders1,condition); + Printer.printList(list); + System.out.println("--------------------:"); + list=suid.select(orders1,condition); + Printer.printList(list); + +// 条件在javabean和condition + System.out.println("-----------------条件在javabean和condition---"); + +// 条件在javabean和condition; 比上一个查询多了一个查询条件; + Condition condition2=BF.getCondition(); + condition2 + .op(Orders_F.userid, Op.eq, 0) + .op(Orders_F.userid, Op.eq, 1) + .lParentheses() + .op(Orders_F.orderid, Op.eq, 1) + .or() + .op(Orders_F.orderid, Op.eq, 2) + .or() + .op(Orders_F.orderid, Op.eq, 0) //加多一个分片值. 变成3个子查询. 前两个子查询,要利用上缓存. 总查询不能用缓存. + //TODO 子查询不能利用上缓存; 因为sql没有拆分,是用总的sql,而总的sql不一样,sql key就不一样,就用不上缓存了. + .rParentheses() + ; + + System.out.println("--------------------:"); + list=suid.select(orders1,condition2); + Printer.printList(list); + System.out.println("--------------------:"); + list=suid.select(orders1,condition2); + Printer.printList(list); + +// 只是javabean有条件; 分是否有分片值 + //条件全在condition 分是否有分片值 +// 条件在javabean和condition 应该有四种 + //要能区分出,非一库一表分片, 是主线程,还是子线程; 主线程的话,缓存要加表列表(要排序);否则缓存不准确 + + //全表查询, 分页; 批量插入, modify等 + + } +} diff --git a/src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingSimpleExam3.java b/src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingSimpleExam3.java new file mode 100644 index 0000000..2db2d6e --- /dev/null +++ b/src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingSimpleExam3.java @@ -0,0 +1,47 @@ + +package org.teasoft.exam.bee.osql.sharding; + +import java.util.List; + +//import org.teasoft.bee.osql.Condition; +//import org.teasoft.bee.osql.Op; +import org.teasoft.bee.osql.Suid; +import org.teasoft.exam.comm.Printer; +import org.teasoft.honey.osql.shortcut.BF; + +/** + * 无查询条件. 要转成全域查询 TODO + * @author Kingstar + * @since 2.0 + * + */ +public class ShardingSimpleExam3 { + + public static void main(String[] args) { + + ShardingInitData.init(); + InitSameDsUtil.initDS(); + + Suid suid=BF.getSuid(); //1 + Orders orders1=new Orders(); +// orders1.setName("Bee(ORM Framework)"); + +// Condition condition=BF.getCondition(); +// condition +// .op(Orders_F.userid, Op.eq, 1) +// .lParentheses() +// .op(Orders_F.orderid, Op.eq, 1) +// .or() +// .op(Orders_F.orderid, Op.eq, 2) +// .rParentheses() +// ; + + + List list=suid.select(orders1); + Printer.printList(list); + System.out.println("--------------------:"); + list=suid.select(orders1); + Printer.printList(list); + + } +} diff --git a/src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingSimpleExam4.java b/src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingSimpleExam4.java new file mode 100644 index 0000000..f86bf51 --- /dev/null +++ b/src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingSimpleExam4.java @@ -0,0 +1,50 @@ + +package org.teasoft.exam.bee.osql.sharding; + +import java.util.List; + +//import org.teasoft.bee.osql.Condition; +//import org.teasoft.bee.osql.Op; +import org.teasoft.bee.osql.Suid; +import org.teasoft.exam.comm.Printer; +import org.teasoft.honey.osql.shortcut.BF; + +/** + * 分片值在javabean; + * 1)没设置分库键; 2)设置分库键; + * @author Kingstar + * @since 2.0 + * + */ +public class ShardingSimpleExam4 { + + public static void main(String[] args) { + + ShardingInitData.init(); + InitSameDsUtil.initDS(); + + Suid suid=BF.getSuid(); //1 + Orders orders1=new Orders(); +// orders1.setName("Bee(ORM Framework)"); + +// Condition condition=BF.getCondition(); +// condition +// .op(Orders_F.userid, Op.eq, 1) +// .lParentheses() +// .op(Orders_F.orderid, Op.eq, 1) +// .or() +// .op(Orders_F.orderid, Op.eq, 2) +// .rParentheses() +// ; + + orders1.setOrderid(2L); //分片值在javabean + + + List list=suid.select(orders1); + Printer.printList(list); + System.out.println("--------------------:"); + list=suid.select(orders1); + Printer.printList(list); + + } +} diff --git a/src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingSimpleExam4_2.java b/src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingSimpleExam4_2.java new file mode 100644 index 0000000..5d571fe --- /dev/null +++ b/src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingSimpleExam4_2.java @@ -0,0 +1,50 @@ + +package org.teasoft.exam.bee.osql.sharding; + +import java.util.List; + +//import org.teasoft.bee.osql.Condition; +//import org.teasoft.bee.osql.Op; +import org.teasoft.bee.osql.Suid; +import org.teasoft.exam.comm.Printer; +import org.teasoft.honey.osql.shortcut.BF; + +/** + * 分片值在javabean; + * 1)没设置分库键; 2)设置分库键; + * @author Kingstar + * @since 2.0 + * + */ +public class ShardingSimpleExam4_2 { + + public static void main(String[] args) { + + ShardingInitData.init(); + InitSameDsUtil.initDS(); + + Suid suid=BF.getSuid(); //1 + Orders orders1=new Orders(); +// orders1.setName("Bee(ORM Framework)"); + +// Condition condition=BF.getCondition(); +// condition +// .op(Orders_F.userid, Op.eq, 1) +// .lParentheses() +// .op(Orders_F.orderid, Op.eq, 1) +// .or() +// .op(Orders_F.orderid, Op.eq, 2) +// .rParentheses() +// ; + + orders1.setOrderid(4L); //分片值在javabean + + + List list=suid.select(orders1); + Printer.printList(list); + System.out.println("--------------------:"); + list=suid.select(orders1); + Printer.printList(list); + + } +} diff --git a/src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingSimpleExam5.java b/src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingSimpleExam5.java new file mode 100644 index 0000000..ef5419c --- /dev/null +++ b/src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingSimpleExam5.java @@ -0,0 +1,42 @@ + +package org.teasoft.exam.bee.osql.sharding; + +import java.util.List; + +import org.teasoft.bee.osql.Condition; +import org.teasoft.bee.osql.Op; +//import org.teasoft.bee.osql.Condition; +//import org.teasoft.bee.osql.Op; +import org.teasoft.bee.osql.Suid; +import org.teasoft.exam.comm.Printer; +import org.teasoft.honey.osql.shortcut.BF; + +/** + * javabean有分片值,但condition不为null,却没有分片值 + * @author Kingstar + * @since 2.0 + * + */ +public class ShardingSimpleExam5 { + + public static void main(String[] args) { + + ShardingInitData.init(); + InitSameDsUtil.initDS(); + + Suid suid=BF.getSuid(); //1 + Orders orders1=new Orders(); +// orders1.setName("Bee(ORM Framework)"); + + Condition condition=BF.getCondition(); + condition.op(Orders_F.remark, Op.eq, "testOneTime2"); + + orders1.setOrderid(2L); //分片值在javabean + List list=suid.select(orders1,condition); + Printer.printList(list); + System.out.println("--------------------:"); + list=suid.select(orders1,condition); + Printer.printList(list); + + } +} diff --git a/src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingSimpleExam6.java b/src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingSimpleExam6.java new file mode 100644 index 0000000..7c3162f --- /dev/null +++ b/src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingSimpleExam6.java @@ -0,0 +1,48 @@ + +package org.teasoft.exam.bee.osql.sharding; + +import java.util.List; + +import org.teasoft.bee.osql.Condition; +import org.teasoft.bee.osql.Op; +//import org.teasoft.bee.osql.Condition; +//import org.teasoft.bee.osql.Op; +import org.teasoft.bee.osql.Suid; +import org.teasoft.exam.comm.Printer; +import org.teasoft.honey.osql.shortcut.BF; + +/** + * 分表的分片值,只设置在condtion的一库一表 + * @author Kingstar + * @since 2.0 + * + */ +public class ShardingSimpleExam6 { + + public static void main(String[] args) { + + ShardingInitData.init(); + InitSameDsUtil.initDS(); + + Suid suid=BF.getSuid(); //1 + Orders orders1=new Orders(); + + Condition condition=BF.getCondition(); + condition +// .op(Orders_F.userid, Op.eq, 1) +// .lParentheses() +// .op(Orders_F.orderid, Op.eq, 1) +// .or() + .op(Orders_F.orderid, Op.eq, 2) +// .rParentheses() + ; + + + List list=suid.select(orders1,condition); + Printer.printList(list); + System.out.println("--------------------:"); + list=suid.select(orders1,condition); + Printer.printList(list); + + } +} diff --git a/src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingSimpleExam9.java b/src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingSimpleExam9.java new file mode 100644 index 0000000..1a72b5d --- /dev/null +++ b/src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingSimpleExam9.java @@ -0,0 +1,45 @@ + +package org.teasoft.exam.bee.osql.sharding; + +import java.util.List; + +import org.teasoft.bee.osql.Suid; +import org.teasoft.exam.comm.Printer; +import org.teasoft.honey.osql.shortcut.BF; + +/** + * 没设置有分片值,会产生全域查询 + * @author Kingstar + * @since 2.0 + * + */ +public class ShardingSimpleExam9 { + + public static void main(String[] args) { + + ShardingInitData.init(); //注释掉,不注册有分片,就不会产生全域查询. + + InitSameDsUtil.initDS(); + + Suid suid=BF.getSuid(); //1 + Orders orders=new Orders(); + //没有加分片值的条件,会查所有 + orders.setRemark("Bee(ORM Framework)"); + +// Condition condition=BF.getCondition(); +// condition +// .op("id", Op.eq, 100001) +// .or() +// .op("id", Op.eq, 100002); + + + List list=suid.select(orders); + Printer.printList(list); + + System.out.println("--------------------:"); + + list=suid.select(orders); + Printer.printList(list); + + } +} diff --git a/src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingSimpleExam9_1.java b/src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingSimpleExam9_1.java new file mode 100644 index 0000000..b38ce50 --- /dev/null +++ b/src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingSimpleExam9_1.java @@ -0,0 +1,59 @@ + +package org.teasoft.exam.bee.osql.sharding; + +import java.util.List; + +import org.teasoft.bee.osql.Suid; +import org.teasoft.exam.comm.Printer; +import org.teasoft.honey.osql.core.HoneyContext; +import org.teasoft.honey.osql.shortcut.BF; +import org.teasoft.honey.sharding.HintManager; + +/** + * 没设置有分片值,会产生全域查询 + * * 但可以通过HintManager指定ds,tab + * case ,查询是空集的情型 + * @author Kingstar + * @since 2.0 + * + */ +public class ShardingSimpleExam9_1 { + + public static void main(String[] args) { + + ShardingInitData.init(); //注释掉,不注册有分片,就不会产生全域查询. + + InitSameDsUtil.initDS(); + + Suid suid=BF.getSuid(); //1 + Orders orders=new Orders(); + //没有加分片值的条件,会查所有 + orders.setRemark("Bee(ORM Framework)"); + +// Condition condition=BF.getCondition(); +// condition +// .op("id", Op.eq, 100001) +// .or() +// .op("id", Op.eq, 100002); + + //case ,查询是空集的情型: + HintManager.setDataSourceName("ds1"); + HintManager.setTableName("orders5"); + List list=suid.select(orders); + Printer.printList(list); + + System.out.println("-----------------aaa---:"); + System.out.println(HoneyContext.getAppointDS()); + + //case 使用hint后的缓存. + HintManager.setDataSourceName("ds1"); + HintManager.setTableName("orders5"); + list=suid.select(orders); + Printer.printList(list); + + //case 没有hint,不能用上一个使用了hint的缓存. + list=suid.select(orders); + Printer.printList(list); + + } +} diff --git a/src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingSimpleExam9_2.java b/src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingSimpleExam9_2.java new file mode 100644 index 0000000..d55660c --- /dev/null +++ b/src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingSimpleExam9_2.java @@ -0,0 +1,57 @@ + +package org.teasoft.exam.bee.osql.sharding; + +import java.util.List; + +import org.teasoft.bee.osql.Suid; +import org.teasoft.exam.comm.Printer; +import org.teasoft.honey.osql.core.HoneyContext; +import org.teasoft.honey.osql.shortcut.BF; +import org.teasoft.honey.sharding.HintManager; + +/** + * 没设置有分片值,会产生全域查询 + * 但可以通过HintManager指定ds,tab + * case ,查询是有值的情型 + * @author Kingstar + * @since 2.0 + * + */ +public class ShardingSimpleExam9_2 { + + public static void main(String[] args) { + + ShardingInitData.init(); //注释掉,不注册有分片,就不会产生全域查询. + + InitSameDsUtil.initDS(); + + Suid suid=BF.getSuid(); //1 + Orders orders=new Orders(); + //没有加分片值的条件,会查所有 + orders.setRemark("Bee(ORM Framework)"); + +// Condition condition=BF.getCondition(); +// condition +// .op("id", Op.eq, 100001) +// .or() +// .op("id", Op.eq, 100002); + + //case ,查询是空集的情型: +// HintManager.setDataSourceName("ds1"); +// HintManager.setTableName("orders5"); + //case ,查询是有值的情型: + HintManager.setDataSourceName("ds0"); + HintManager.setTableName("orders1"); + List list=suid.select(orders); + Printer.printList(list); + + System.out.println("-----------------aaa---:"); + System.out.println(HoneyContext.getAppointDS()); + + HintManager.setDataSourceName("ds0"); + HintManager.setTableName("orders1"); + list=suid.select(orders); + Printer.printList(list); + + } +} diff --git a/src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingUpdateExam.java b/src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingUpdateExam.java new file mode 100644 index 0000000..b1d389a --- /dev/null +++ b/src/main/java/org/teasoft/exam/bee/osql/sharding/ShardingUpdateExam.java @@ -0,0 +1,98 @@ + +package org.teasoft.exam.bee.osql.sharding; + +import java.util.List; + +import org.teasoft.bee.osql.Condition; +import org.teasoft.bee.osql.Op; +import org.teasoft.bee.osql.SuidRich; +import org.teasoft.honey.osql.core.Logger; +import org.teasoft.honey.osql.shortcut.BF; +import org.teasoft.honey.util.Printer; + +/** + * Update Sharding.Update的分片 + * @author Kingstar + * @since 2.0 + * + */ +public class ShardingUpdateExam { + + public static void main(String[] args) { + + ShardingInitData.init(); + InitSameDsUtil.initDS(); + + SuidRich suidRich=BF.getSuidRich(); //1 + + //全域 +// Orders orders=new Orders(); +// orders.setRemark("testOneTime13"); +// orders.setId(1L); +// int delNum=suidRich.update(orders); +// Logger.info("-----------更新的记录数:"+delNum); +// +// //一表一库 +// Orders orders2=new Orders(); +// orders2.setOrderid(1L); +// orders2.setId(1L); +// int delNum2=suidRich.update(orders2); +// Logger.info("-----------更新的记录数:"+delNum2); +// +// 一库两表 +// Orders orders3=new Orders(); +// orders3.setOrderid(1L); +// orders3.setId(1L); +// Condition condition3=BF.getCondition(); +// condition3 +// .or() +// .op(Orders_F.orderid, Op.eq, 2L); +//// int delNum3=suidRich.update(orders3,condition3); +// int delNum3=suidRich.updateById(orders3,condition3); +// Logger.info("-----------更新的记录数:"+delNum3); +// +// +// //一库一表, condition4无分片 +// Orders orders4=new Orders(); +// orders4.setOrderid(1L); +// orders4.setId(1L); +// Condition condition4=BF.getCondition(); +//// condition4 +//// .or() +//// .op(Orders_F.orderid, Op.eq, 2L); +// int delNum4=suidRich.updateById(orders4,condition4); +// Logger.info("-----------更新的记录数:"+delNum4); +// + //多库多表 +// Orders orders5=new Orders(); +// orders5.setOrderid(2L); +// orders5.setId(1L); +// Condition condition5=BF.getCondition(); +// condition5 +// .or() +// .op(Orders_F.orderid, Op.eq, 9L); +// int delNum5=suidRich.updateById(orders5,condition5); +// Logger.info("-----------更新的记录数:"+delNum5); + + Orders orders6=new Orders(); + orders6.setOrderid(2L); +// orders6.setId(1L); + Condition condition6=BF.getCondition(); + condition6 + .or() + .op(Orders_F.orderid, Op.eq, 9L) + .set(Orders_F.remark, "changed by sharding!") + ; + int delNum6=suidRich.update(orders6,condition6); + Logger.info("-----------更新的记录数:"+delNum6); + + + List list=suidRich.select(orders6,condition6); + Printer.printList(list); + + list=suidRich.select(orders6,condition6); + + + + } +} diff --git a/src/main/java/org/teasoft/exam/bee/osql/sharding/SuidRichExam.java b/src/main/java/org/teasoft/exam/bee/osql/sharding/SuidRichExam.java new file mode 100644 index 0000000..3d1c428 --- /dev/null +++ b/src/main/java/org/teasoft/exam/bee/osql/sharding/SuidRichExam.java @@ -0,0 +1,415 @@ +/* + * Copyright 2016-2019 the original author.All rights reserved. + * Kingstar(honeysoft@126.com) + * The license,see the LICENSE file. + */ + +package org.teasoft.exam.bee.osql.sharding; + +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.List; + +import org.teasoft.bee.osql.BeeException; +import org.teasoft.bee.osql.Condition; +import org.teasoft.bee.osql.FunctionType; +import org.teasoft.bee.osql.IncludeType; +import org.teasoft.bee.osql.Op; +import org.teasoft.bee.osql.OrderType; +import org.teasoft.bee.osql.SuidRich; +import org.teasoft.exam.comm.Printer; +import org.teasoft.honey.osql.core.BeeFactory; +import org.teasoft.honey.osql.core.BeeFactoryHelper; +import org.teasoft.honey.osql.core.ConditionImpl; +import org.teasoft.honey.osql.core.HoneyConfig; +import org.teasoft.honey.osql.core.HoneyUtil; +import org.teasoft.honey.osql.core.Logger; +import org.teasoft.honey.osql.shortcut.BF; + +/** + * @author Kingstar + * @since 2.0 + */ +public class SuidRichExam { + + private static SuidRich suidRich = BeeFactory.getHoneyFactory().getSuidRich(); + + public static SuidRich getSuidRich() { + return suidRich; + } + + public static void setSuidRich(SuidRich suidRich) { + SuidRichExam.suidRich = suidRich; + } + + public static void main(String[] args) { + + ShardingInitData.init(); //分片 + InitSameDsUtil.initDS(); + + test(); + } + + public static void test() { + + try { + + Orders orders = new Orders(); + orders.setName("client"); + orders.setUserid(0L); + orders.setRemark("testOneTime"); + orders.setTotal(new BigDecimal("93.99")); + + orders.setSequence(""); //empty String test + Logger.info("==============orders.getId(): "+orders.getId()); + + int insertNum0 = suidRich.insert(orders); + Logger.info("insert record:" + insertNum0); + + int insertNum1 = suidRich.insert(orders, IncludeType.INCLUDE_NULL); + Logger.info("insert record:" + insertNum1); + Logger.info("==============orders.getId(): "+orders.getId()); + + int insertNum2 = suidRich.insert(orders, IncludeType.INCLUDE_EMPTY); + Logger.info("insert record:" + insertNum2); + Logger.info("==============orders.getId(): "+orders.getId()); + + int insertNum3 = suidRich.insert(orders, IncludeType.INCLUDE_BOTH); + Logger.info("insert record:" + insertNum3); + + int updateNum1 = suidRich.update(orders, "name,remark"); + Logger.info("updateNum1: " + updateNum1); + + int updateNum2 = suidRich.update(orders, "name"); + Logger.info("updateNum2: " + updateNum2); + + // ObjSQLException: updateFieldList at least include one field. + // int updateNum3=suidRich.update(orders, ""); + // Logger.info("updateNum3: "+updateNum3); + + int updateNum4 = suidRich.update(orders, "name", IncludeType.INCLUDE_EMPTY); + Logger.info("updateNum4: " + updateNum4); + + int updateNum5 = suidRich.update(orders, "name", IncludeType.INCLUDE_NULL); + Logger.info("updateNum5: " + updateNum5); + + int updateNum6 = suidRich.update(orders, "name", IncludeType.INCLUDE_BOTH); + Logger.info("updateNum6: " + updateNum6); + + int updateNum4_2 = suidRich.update(orders, "name,total", IncludeType.INCLUDE_EMPTY); + Logger.info("updateNum4_2: " + updateNum4_2); + + int updateNum5_2 = suidRich.update(orders, "name,total", IncludeType.INCLUDE_NULL); + Logger.info("updateNum5_2: " + updateNum5_2); + + int updateNum6_2 = suidRich.update(orders, "name,total", IncludeType.INCLUDE_BOTH); + Logger.info("updateNum6_2: " + updateNum6_2); + + //the id field of entity must not be null ! + // int updateNum8_0=suidRich.update(orders,IncludeType.INCLUDE_EMPTY); + // Logger.info("updateNum8_0: "+updateNum8_0); + + Orders orders00 = new Orders(); + + orders00.setId(100L); + orders00.setName("client01"); + orders00.setUserid(0L); + orders00.setRemark("testOneTime"); + orders00.setTotal(new BigDecimal("93.99")); + + orders00.setSequence(""); //empty String test + + String funCount = suidRich.selectWithFun(orders, FunctionType.COUNT, "total"); + String funMax = suidRich.selectWithFun(orders, FunctionType.MAX, "total"); + String funMin = suidRich.selectWithFun(orders, FunctionType.MIN, "total"); + String funAvg = suidRich.selectWithFun(orders, FunctionType.AVG, "total"); + String funSum = suidRich.selectWithFun(orders, FunctionType.SUM, "total"); + + Logger.info("funCount:" + funCount); + Logger.info("funMax:" + funMax); + Logger.info("funMin:" + funMin); + Logger.info("funAvg:" + funAvg); + Logger.info("funSum:" + funSum); + + int insertNum00 = suidRich.insert(orders00, IncludeType.INCLUDE_NULL); + Logger.info("insert record:" + insertNum00); + + int updateNum8 = suidRich.update(orders00, IncludeType.INCLUDE_EMPTY); + Logger.info("updateNum8: " + updateNum8); + int updateNum9 = suidRich.update(orders00, IncludeType.INCLUDE_NULL); + Logger.info("updateNum9: " + updateNum9); + int updateNum10 = suidRich.update(orders00, IncludeType.INCLUDE_BOTH); + Logger.info("updateNum10: " + updateNum10); + + // //update默认主键为id时,无id字段或id为null异常处理. + // orders00.setId(null); + // int updateNum11=suidRich.update(orders00,IncludeType.INCLUDE_NULL); + // Logger.info("updateNum11: "+updateNum11); + // int updateNum12=suidRich.update(orders00,IncludeType.INCLUDE_EMPTY); + // Logger.info("updateNum12: "+updateNum12); + + int deleteNum = suidRich.delete(orders00); + Logger.info("deleteNum: " + deleteNum); + + //test batch insert + Orders orders0 = new Orders(); + orders0.setId(1004L); + orders0.setUserid(0L); + // orders0.setName("MVC book"); + orders0.setTotal(new BigDecimal(91)); + orders0.setRemark("testOneTime"); + + Orders orders1 = new Orders(); + orders1.setId(1005L); + orders1.setUserid(0L); + orders1.setRemark("testOneTime"); + orders1.setTotal(new BigDecimal(20)); + + Orders orders2 = new Orders(); + orders2.setId(1006L); + orders2.setUserid(0L); + orders2.setRemark("testOneTime"); + orders2.setTotal(new BigDecimal(23)); + + Orders[] ordersArray = new Orders[3]; + ordersArray[0] = orders0; + ordersArray[1] = orders1; + ordersArray[2] = orders2; + + //// int insertArray[]=suidRich.insert(ordersArray,2); + // int insertArray[]=suidRich.insert(ordersArray,2,"id,datetime");//batch insert + // for (int i = 0; i < insertArray.length; i++) { + // Logger.info(insertArray[i]+" ,"); + // } + + // int insertArray=suidRich.insert(ordersArray,2,"id,datetime");//batch insert + int insertArray = suidRich.insert(ordersArray, 2, "datetime");//batch insert + Logger.info(insertArray); + + // int insertArray2[]=suidRich.insert(ordersArray,"id,datetime");//batch insert + // for (int i = 0; i < insertArray2.length; i++) { + // Logger.info(insertArray2[i]+" ,"); + // } + + orders0.setId(1007L); + orders1.setId(1008L); + orders2.setId(1009L); + // int insertArray2=suidRich.insert(ordersArray,"id,datetime");//batch insert + int insertArray2 = suidRich.insert(ordersArray, "datetime");//batch insert + Logger.info(insertArray2); + + orders0.setId(10010L); + orders1.setId(10011L); + orders2.setId(10012L); + List list = new ArrayList<>(); + list.add(orders0); + list.add(orders1); + list.add(orders2); + int insertList = suidRich.insert(list, "datetime");//batch insert List + Logger.info(insertList); + + Orders exampleField = new Orders(); + exampleField.setUserid(0L); + // select some fields + List selectSomeField = suidRich.select(exampleField, "name,total"); //select Some Field + Logger.info(selectSomeField.size() + ""); + + // LeafAlloc3 leafAlloc=new LeafAlloc3(); + // suidRich.select(leafAlloc, "maxId"); //check the selectFields + + Orders ordersForString = new Orders(); + ordersForString.setUserid(0L); + // List listString= + suidRich.selectString(ordersForString); + List listString = suidRich.selectString(ordersForString, "id,userid,total,createtime"); + for (String str[] : listString) { + // String str[]=listString.get(i); + for (String s : str) { + Logger.info(s + " , "); + } + Logger.info(""); + } + + Orders order_more = new Orders(); + order_more.setRemark("testOneTime"); + + // test paging + Logger.info("test paging"); + Logger.info(HoneyConfig.getHoneyConfig().getDbName()); + suidRich.select(order_more); + suidRich.select(order_more, 3); + List listMore = suidRich.select(order_more, 0, 3); + // List listMore=suidRich.select(order_more,1,5); + for (int i = 0; i < listMore.size(); i++) { + Logger.info(listMore.get(i).toString()); + } + + listMore = suidRich.select(order_more, 2, 6); + + // int deleteNum2=suidRich.delete(order_more); // bug : Lock wait timeout exceeded; + // Logger.info("deleteNum2: "+deleteNum2); + + Orders orders18 = new Orders(); + orders18.setId(100018L); + orders18.setUserid(0L); + orders18.setRemark("test insert and delete"); + orders18.setTotal(new BigDecimal("18.18")); + + Orders orders19 = new Orders(); + orders19.setId(100019L); + orders19.setUserid(0L); + orders19.setRemark("test insert and delete"); + orders19.setTotal(new BigDecimal("19.19")); + + Orders orders20 = new Orders(); + orders20.setId(100020L); + orders20.setUserid(0L); + orders20.setRemark("test insert and delete"); + orders20.setTotal(new BigDecimal("20.20")); + List list1820 = new ArrayList<>(); + list1820.add(orders18); + list1820.add(orders19); + list1820.add(orders20); + suidRich.insert(list1820, 2); + + Orders testInsertAndDeleteOrders = new Orders(); + testInsertAndDeleteOrders.setRemark("test insert and delete"); + suidRich.delete(testInsertAndDeleteOrders, IncludeType.EXCLUDE_BOTH); + suidRich.insert(list1820); + + orders18.setId(100018 + 3L); + orders19.setId(100019 + 3L); + orders20.setId(100020 + 3L); + suidRich.insert(list1820, 3, "remark"); // donot insert remark field. + + suidRich.count(testInsertAndDeleteOrders); + suidRich.select(testInsertAndDeleteOrders, IncludeType.EXCLUDE_BOTH); + suidRich.selectJson(testInsertAndDeleteOrders, IncludeType.EXCLUDE_BOTH); + Condition testInsertAndDeleteConditon = new ConditionImpl(); + testInsertAndDeleteConditon.op("id", Op.ge, 100018); + suidRich.select(testInsertAndDeleteOrders, IncludeType.EXCLUDE_BOTH, testInsertAndDeleteConditon); + suidRich.selectJson(testInsertAndDeleteOrders, IncludeType.EXCLUDE_BOTH, testInsertAndDeleteConditon); + suidRich.select(testInsertAndDeleteOrders, testInsertAndDeleteConditon); + suidRich.selectJson(testInsertAndDeleteOrders, testInsertAndDeleteConditon); + suidRich.count(testInsertAndDeleteOrders, testInsertAndDeleteConditon); + suidRich.selectOrderBy(testInsertAndDeleteOrders, "id"); + suidRich.selectOrderBy(testInsertAndDeleteOrders, "id,name", new OrderType[] { OrderType.ASC, OrderType.DESC }); + + if (HoneyUtil.isMysql()) { + Logger.info("=====随机取一条数据=========================="); + suidRich.selectOrderBy(testInsertAndDeleteOrders, "rand()"); + + Condition randCondition = BF.getCondition(); + randCondition.orderBy("rand()"); + randCondition.size(1); + suidRich.select(new Orders(), randCondition); + + } + + testInsertAndDeleteOrders.setId(100021L); + suidRich.selectOne(testInsertAndDeleteOrders); + suidRich.selectString(testInsertAndDeleteOrders, testInsertAndDeleteConditon); + suidRich.select(testInsertAndDeleteOrders, "id,Remark,userid", 0, 10); + suidRich.selectWithFun(testInsertAndDeleteOrders, FunctionType.MAX, "total", testInsertAndDeleteConditon); + suidRich.updateById(testInsertAndDeleteOrders, testInsertAndDeleteConditon); + + try { + Condition Condition = new ConditionImpl(); + Condition.op("id", Op.eq, 100023); + Condition.set("remark", "test update"); + suidRich.update(testInsertAndDeleteOrders, Condition); + } catch (Exception e) { + Logger.error(e.getMessage()); + e.printStackTrace(); + } + + suidRich.delete(testInsertAndDeleteOrders, IncludeType.EXCLUDE_BOTH); + suidRich.delete(testInsertAndDeleteOrders, testInsertAndDeleteConditon); + suidRich.deleteById(Orders.class, 100021); + suidRich.deleteById(Orders.class, 100022L); + suidRich.deleteById(Orders.class, "100023"); + + try { + suidRich.select(testInsertAndDeleteOrders, "id,Remark,userid", 5, 10); + } catch (Exception e) { + Logger.error(e.getMessage()); + e.printStackTrace(); + } + + suidRich.beginSameConnection(); + + if( !(HoneyUtil.isSQLite() || HoneyUtil.isSqlServer()) ) { + Orders orders11 = new Orders(); + orders11.setUserid(0L); + Logger.info("====================================="); + Condition condition_add_forUpdate = new ConditionImpl(); + condition_add_forUpdate.op("id", Op.eq, 100003) + // .start(1).size(300) //oracle have exception, when use "for update" + .size(300).forUpdate(); // 用for update锁住某行记录 + List list11 = suidRich.select(orders11, condition_add_forUpdate); //SQL SERVER : 只有 DECLARE CURSOR 才允许使用 FOR UPDATE 子句。 + for (int i = 0; i < list11.size(); i++) { + Logger.info(list11.get(i).toString()); + // suidRich.update(list11.get(i)); //test + } + } + + Orders orders12 = new Orders(); + orders12.setId(100003L); + orders12.setRemark("test"); + suidRich.update(orders12); + + suidRich.endSameConnection(); + + Condition distinctCondition0=BeeFactoryHelper.getCondition(); + distinctCondition0.selectDistinctField("userid"); + suidRich.selectString(new Orders(), distinctCondition0); + + Condition distinctCondition=BeeFactoryHelper.getCondition(); + distinctCondition.selectDistinctField("userid","uniqueUserid"); +// distinctCondition.selectFun(FunctionType.COUNT, "id"); + distinctCondition.op("name", Op.nq, null); + List userid=suidRich.selectString(new Orders(), distinctCondition); + Printer.print(userid); + + Orders orders15 = new Orders(); + orders15.setId(1005L); + boolean f=suidRich.exist(orders15); + System.out.println("Orders id=100001L is exist? "+f); + +// test update(T oldEntity,T newEntity) + Orders orders16 = new Orders(); + orders16.setRemark("update(T oldEntity,T newEntity)"); + orders16.setName("update(T oldEntity,T newEntity)"); + Long id16=suidRich.insertAndReturnId(orders16); +// orders16.setId(id16); +// System.out.println(suidRich.selectById(new Orders(), id16).toString()); + + Orders orders16_new = new Orders(); + orders16_new.setRemark("by update with : update(T oldEntity,T newEntity)"); + suidRich.update(orders16, orders16_new); +// System.out.println(suidRich.selectById(new Orders(), id16).toString()); + + suidRich.delete(orders16_new); + + } catch (BeeException e) { + Logger.error("In SuidRichExam (Exception):" + e.getMessage()); + e.printStackTrace(); + } catch (Exception e) { + Logger.error("In SuidRichExam (Exception):" + e.getMessage()); + e.printStackTrace(); + } + // HoneyContext.justGetPreparedValue("abc"); + + Orders exampleField = new Orders(); + exampleField.setUserid(0L); + // select some fields + List selectSomeField = suidRich.select(exampleField, "name,total"); + + Orders one=suidRich.selectById(exampleField,exampleField.getId()); + if(one!=null) suidRich.update(exampleField); + else suidRich.insert(exampleField); + + } + + +} diff --git a/src/main/java/org/teasoft/exam/bee/osql/sharding/SuidRichExamReturnListStringArray.java b/src/main/java/org/teasoft/exam/bee/osql/sharding/SuidRichExamReturnListStringArray.java new file mode 100644 index 0000000..839ef1e --- /dev/null +++ b/src/main/java/org/teasoft/exam/bee/osql/sharding/SuidRichExamReturnListStringArray.java @@ -0,0 +1,147 @@ +/* + * Copyright 2016-2019 the original author.All rights reserved. + * Kingstar(honeysoft@126.com) + * The license,see the LICENSE file. + */ + +package org.teasoft.exam.bee.osql.sharding; + +import java.util.List; + +import org.teasoft.bee.osql.Condition; +import org.teasoft.bee.osql.Op; +import org.teasoft.bee.osql.SuidRich; +import org.teasoft.exam.comm.Printer; +import org.teasoft.honey.osql.core.BeeFactory; +import org.teasoft.honey.osql.core.BeeFactoryHelper; +import org.teasoft.honey.osql.core.ConditionImpl; +import org.teasoft.honey.osql.core.Logger; + +/** + * 返回值是List的查询的分片 + * @author Kingstar + * @since 2.0 + */ +public class SuidRichExamReturnListStringArray { + + private static SuidRich suidRich = BeeFactory.getHoneyFactory().getSuidRich(); + + public static SuidRich getSuidRich() { + return suidRich; + } + + public static void setSuidRich(SuidRich suidRich) { + SuidRichExamReturnListStringArray.suidRich = suidRich; + } + + public static void main(String[] args) { + + ShardingInitData.init(); //分片 + InitSameDsUtil.initDS(); + + test(); + } + + public static void test() { + +// try { + +// //test batch insert +// Orders orders0 = new Orders(); +// orders0.setId(1004L); +// orders0.setUserid(0L); +// // orders0.setName("MVC book"); +// orders0.setTotal(new BigDecimal(91)); +// orders0.setRemark("testOneTime"); +// +// Orders orders1 = new Orders(); +// orders1.setId(1005L); +// orders1.setUserid(0L); +// orders1.setRemark("testOneTime"); +// orders1.setTotal(new BigDecimal(20)); +// +// Orders orders2 = new Orders(); +// orders2.setId(1006L); +// orders2.setUserid(0L); +// orders2.setRemark("testOneTime"); +// orders2.setTotal(new BigDecimal(23)); +// +// Orders[] ordersArray = new Orders[3]; +// ordersArray[0] = orders0; +// ordersArray[1] = orders1; +// ordersArray[2] = orders2; +// +// int insertArray = suidRich.insert(ordersArray, 2, "datetime");//batch insert +// Logger.info(insertArray); +// +// +// orders0.setId(1007L); +// orders1.setId(1008L); +// orders2.setId(1009L); +// // int insertArray2=suidRich.insert(ordersArray,"id,datetime");//batch insert +// int insertArray2 = suidRich.insert(ordersArray, "datetime");//batch insert +// Logger.info(insertArray2); +// +// orders0.setId(10010L); +// orders1.setId(10011L); +// orders2.setId(10012L); +// List list = new ArrayList<>(); +// list.add(orders0); +// list.add(orders1); +// list.add(orders2); +// int insertList = suidRich.insert(list, "datetime");//batch insert List +// Logger.info(insertList); +// +// Orders exampleField = new Orders(); +// exampleField.setUserid(0L); +// // select some fields +// List selectSomeField = suidRich.select(exampleField, "name,total"); //select Some Field +// Logger.info(selectSomeField.size() + ""); + + + + Orders ordersForString = new Orders(); +// ordersForString.setUserid(0L); + ordersForString.setOrderid(0L); + + suidRich.selectString(ordersForString); + List listString = suidRich.selectString(ordersForString, "id,userid,total,createtime"); + for (String str[] : listString) { + for (String s : str) { + System.out.print(s + " , "); + } + Logger.info(""); + } + + + + + Condition conditon = new ConditionImpl(); + conditon.op("id", Op.ge, 100018); + suidRich.selectString(ordersForString, conditon); + + Condition conditon2 = new ConditionImpl(); + conditon2 + .op(Orders_F.orderid, Op.eq, 6) + .or() + .op(Orders_F.orderid, Op.eq, 2) + ; + + suidRich.selectString(ordersForString, conditon2); + + Condition distinctCondition0=BeeFactoryHelper.getCondition(); + distinctCondition0.selectDistinctField("userid"); + suidRich.selectString(new Orders(), distinctCondition0); + + Condition distinctCondition=BeeFactoryHelper.getCondition(); + distinctCondition.selectDistinctField("userid","uniqueUserid"); + distinctCondition.op("name", Op.nq, null); + List userid=suidRich.selectString(new Orders(), distinctCondition); + Logger.info("============================="); + Printer.print(userid); + + } + + + +} diff --git a/src/main/java/org/teasoft/exam/bee/osql/sharding/anno/Orders.java b/src/main/java/org/teasoft/exam/bee/osql/sharding/anno/Orders.java new file mode 100644 index 0000000..85efa46 --- /dev/null +++ b/src/main/java/org/teasoft/exam/bee/osql/sharding/anno/Orders.java @@ -0,0 +1,124 @@ +package org.teasoft.exam.bee.osql.sharding.anno; + +import java.io.Serializable; +import java.math.BigDecimal; + +import org.teasoft.bee.osql.annotation.Sharding; + +/** + * @author Honey + * Create on 2022-08-23 23:31:36 + */ +public class Orders implements Serializable { + + private static final long serialVersionUID = 1596710362247L; + + private Long id; + @Sharding(dsRule = "userid %2",dsName = "ds",tabRule = "userid %6") + private Long userid; + private Long orderid; + private String name; + private BigDecimal total; + private String createtime; + private String remark; + private String sequence; + private String abc; + private String updatetime; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public Long getUserid() { + return userid; + } + + public void setUserid(Long userid) { + this.userid = userid; + } + + public Long getOrderid() { + return orderid; + } + + public void setOrderid(Long orderid) { + this.orderid = orderid; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public BigDecimal getTotal() { + return total; + } + + public void setTotal(BigDecimal total) { + this.total = total; + } + + public String getCreatetime() { + return createtime; + } + + public void setCreatetime(String createtime) { + this.createtime = createtime; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public String getSequence() { + return sequence; + } + + public void setSequence(String sequence) { + this.sequence = sequence; + } + + public String getAbc() { + return abc; + } + + public void setAbc(String abc) { + this.abc = abc; + } + + public String getUpdatetime() { + return updatetime; + } + + public void setUpdatetime(String updatetime) { + this.updatetime = updatetime; + } + + public String toString(){ + StringBuilder str=new StringBuilder(); + str.append("Orders1["); + str.append("id=").append(id); + str.append(",userid=").append(userid); + str.append(",orderid=").append(orderid); + str.append(",name=").append(name); + str.append(",total=").append(total); + str.append(",createtime=").append(createtime); + str.append(",remark=").append(remark); + str.append(",sequence=").append(sequence); + str.append(",abc=").append(abc); + str.append(",updatetime=").append(updatetime); + str.append("]"); + return str.toString(); + } +} \ No newline at end of file diff --git a/src/main/java/org/teasoft/exam/bee/osql/sharding/anno/Orders2.java b/src/main/java/org/teasoft/exam/bee/osql/sharding/anno/Orders2.java new file mode 100644 index 0000000..3beee7e --- /dev/null +++ b/src/main/java/org/teasoft/exam/bee/osql/sharding/anno/Orders2.java @@ -0,0 +1,126 @@ +package org.teasoft.exam.bee.osql.sharding.anno; + +import java.io.Serializable; +import java.math.BigDecimal; + +import org.teasoft.bee.osql.annotation.Entity; +import org.teasoft.bee.osql.annotation.Sharding; + +/** + * @author Honey + * Create on 2022-08-23 23:31:36 + */ +@Entity("Orders") +public class Orders2 implements Serializable { + + private static final long serialVersionUID = 1596710362247L; + + private Long id; + @Sharding(appointDS="ds0",dsRule = "userid %2",dsName = "ds",tabRule = "userid %6") + private Long userid; + private Long orderid; + private String name; + private BigDecimal total; + private String createtime; + private String remark; + private String sequence; + private String abc; + private String updatetime; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public Long getUserid() { + return userid; + } + + public void setUserid(Long userid) { + this.userid = userid; + } + + public Long getOrderid() { + return orderid; + } + + public void setOrderid(Long orderid) { + this.orderid = orderid; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public BigDecimal getTotal() { + return total; + } + + public void setTotal(BigDecimal total) { + this.total = total; + } + + public String getCreatetime() { + return createtime; + } + + public void setCreatetime(String createtime) { + this.createtime = createtime; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public String getSequence() { + return sequence; + } + + public void setSequence(String sequence) { + this.sequence = sequence; + } + + public String getAbc() { + return abc; + } + + public void setAbc(String abc) { + this.abc = abc; + } + + public String getUpdatetime() { + return updatetime; + } + + public void setUpdatetime(String updatetime) { + this.updatetime = updatetime; + } + + public String toString(){ + StringBuilder str=new StringBuilder(); + str.append("Orders1["); + str.append("id=").append(id); + str.append(",userid=").append(userid); + str.append(",orderid=").append(orderid); + str.append(",name=").append(name); + str.append(",total=").append(total); + str.append(",createtime=").append(createtime); + str.append(",remark=").append(remark); + str.append(",sequence=").append(sequence); + str.append(",abc=").append(abc); + str.append(",updatetime=").append(updatetime); + str.append("]"); + return str.toString(); + } +} \ No newline at end of file diff --git a/src/main/java/org/teasoft/exam/bee/osql/sharding/anno/Orders3.java b/src/main/java/org/teasoft/exam/bee/osql/sharding/anno/Orders3.java new file mode 100644 index 0000000..94f9649 --- /dev/null +++ b/src/main/java/org/teasoft/exam/bee/osql/sharding/anno/Orders3.java @@ -0,0 +1,128 @@ +package org.teasoft.exam.bee.osql.sharding.anno; + +import java.io.Serializable; +import java.math.BigDecimal; + +import org.teasoft.bee.osql.annotation.Entity; +import org.teasoft.bee.osql.annotation.Sharding; + +/** + * @author Honey + * Create on 2022-08-23 23:31:36 + */ +@Entity("Orders") +public class Orders3 implements Serializable { + + private static final long serialVersionUID = 1596710362247L; + + private Long id; +// @Sharding(dsRule = "userid %2",dsName = "ds",tabRule = "userid %6") +// @Sharding(tabRule = "userid %6")//Sharding注解,不用appointDS,appointTab时,至少要以下三项 + @Sharding(tabRule = "userid %6",dsName="ds",dsRule = "userid %6/3") + private Long userid; + private Long orderid; + private String name; + private BigDecimal total; + private String createtime; + private String remark; + private String sequence; + private String abc; + private String updatetime; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public Long getUserid() { + return userid; + } + + public void setUserid(Long userid) { + this.userid = userid; + } + + public Long getOrderid() { + return orderid; + } + + public void setOrderid(Long orderid) { + this.orderid = orderid; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public BigDecimal getTotal() { + return total; + } + + public void setTotal(BigDecimal total) { + this.total = total; + } + + public String getCreatetime() { + return createtime; + } + + public void setCreatetime(String createtime) { + this.createtime = createtime; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public String getSequence() { + return sequence; + } + + public void setSequence(String sequence) { + this.sequence = sequence; + } + + public String getAbc() { + return abc; + } + + public void setAbc(String abc) { + this.abc = abc; + } + + public String getUpdatetime() { + return updatetime; + } + + public void setUpdatetime(String updatetime) { + this.updatetime = updatetime; + } + + public String toString(){ + StringBuilder str=new StringBuilder(); + str.append("Orders1["); + str.append("id=").append(id); + str.append(",userid=").append(userid); + str.append(",orderid=").append(orderid); + str.append(",name=").append(name); + str.append(",total=").append(total); + str.append(",createtime=").append(createtime); + str.append(",remark=").append(remark); + str.append(",sequence=").append(sequence); + str.append(",abc=").append(abc); + str.append(",updatetime=").append(updatetime); + str.append("]"); + return str.toString(); + } +} \ No newline at end of file diff --git a/src/main/java/org/teasoft/exam/bee/osql/sharding/anno/Orders4.java b/src/main/java/org/teasoft/exam/bee/osql/sharding/anno/Orders4.java new file mode 100644 index 0000000..7d8df63 --- /dev/null +++ b/src/main/java/org/teasoft/exam/bee/osql/sharding/anno/Orders4.java @@ -0,0 +1,127 @@ +package org.teasoft.exam.bee.osql.sharding.anno; + +import java.io.Serializable; +import java.math.BigDecimal; + +import org.teasoft.bee.osql.annotation.Entity; +import org.teasoft.bee.osql.annotation.Sharding; + +/** + * @author Honey + * Create on 2022-08-23 23:31:36 + */ +@Entity("Orders") +public class Orders4 implements Serializable { + + private static final long serialVersionUID = 1596710362247L; + + private Long id; + private Long userid; + private Long orderid; + private String name; + private BigDecimal total; + private String createtime; +// @Sharding(tabRule = "remark %6") //Sharding注解,不用appointDS,appointTab时,至少要以下三项 + @Sharding(tabRule = "remark %6",dsName="ds",dsRule = "remark %6/3") + private String remark; + private String sequence; + private String abc; + private String updatetime; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public Long getUserid() { + return userid; + } + + public void setUserid(Long userid) { + this.userid = userid; + } + + public Long getOrderid() { + return orderid; + } + + public void setOrderid(Long orderid) { + this.orderid = orderid; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public BigDecimal getTotal() { + return total; + } + + public void setTotal(BigDecimal total) { + this.total = total; + } + + public String getCreatetime() { + return createtime; + } + + public void setCreatetime(String createtime) { + this.createtime = createtime; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public String getSequence() { + return sequence; + } + + public void setSequence(String sequence) { + this.sequence = sequence; + } + + public String getAbc() { + return abc; + } + + public void setAbc(String abc) { + this.abc = abc; + } + + public String getUpdatetime() { + return updatetime; + } + + public void setUpdatetime(String updatetime) { + this.updatetime = updatetime; + } + + public String toString(){ + StringBuilder str=new StringBuilder(); + str.append("Orders1["); + str.append("id=").append(id); + str.append(",userid=").append(userid); + str.append(",orderid=").append(orderid); + str.append(",name=").append(name); + str.append(",total=").append(total); + str.append(",createtime=").append(createtime); + str.append(",remark=").append(remark); + str.append(",sequence=").append(sequence); + str.append(",abc=").append(abc); + str.append(",updatetime=").append(updatetime); + str.append("]"); + return str.toString(); + } +} \ No newline at end of file diff --git a/src/main/java/org/teasoft/exam/bee/osql/sharding/anno/Orders_F.java b/src/main/java/org/teasoft/exam/bee/osql/sharding/anno/Orders_F.java new file mode 100644 index 0000000..9fc6ca0 --- /dev/null +++ b/src/main/java/org/teasoft/exam/bee/osql/sharding/anno/Orders_F.java @@ -0,0 +1,23 @@ +package org.teasoft.exam.bee.osql.sharding.anno; + +/** + * Relative field name for Javabean Orders1 + * @author Honey + * Create on 2022-08-23 23:31:36 + */ +public class Orders_F { + + private Orders_F() {} + + public static final String id = "id"; + public static final String userid = "userid"; + public static final String orderid = "orderid"; + public static final String name = "name"; + public static final String total = "total"; + public static final String createtime = "createtime"; + public static final String remark = "remark"; + public static final String sequence = "sequence"; + public static final String abc = "abc"; + public static final String updatetime = "updatetime"; + public static final String ALL_NAMES = "id,userid,orderid,name,total,createtime,remark,sequence,abc,updatetime"; +} \ No newline at end of file diff --git a/src/main/java/org/teasoft/exam/bee/osql/sharding/anno/ShardingSimpleExam10.java b/src/main/java/org/teasoft/exam/bee/osql/sharding/anno/ShardingSimpleExam10.java new file mode 100644 index 0000000..a22ec2f --- /dev/null +++ b/src/main/java/org/teasoft/exam/bee/osql/sharding/anno/ShardingSimpleExam10.java @@ -0,0 +1,55 @@ + +package org.teasoft.exam.bee.osql.sharding.anno; + +import java.util.List; + +import org.teasoft.bee.osql.Condition; +import org.teasoft.bee.osql.Op; +import org.teasoft.bee.osql.Suid; +import org.teasoft.exam.bee.osql.sharding.InitSameDsUtil; +import org.teasoft.exam.comm.Printer; +import org.teasoft.honey.osql.shortcut.BF; + +/** + * String类型分片值 + * @author Kingstar + * @since 2.0 + * + */ +public class ShardingSimpleExam10 { + + public static void main(String[] args) { + + InitSameDsUtil.initDS(); +// ShardingInitData.init(); //使用注解 + +// @Sharding(tabRule = "userid %6") + Suid suid=BF.getSuid(); //1 + Orders4 orders4=new Orders4(); + orders4.setRemark("String类型分片值"); + + List list=null; + + list=suid.select(orders4,null); + Printer.printList(list); + System.out.println("--------------------:"); + list=suid.select(orders4,null); + Printer.printList(list); + + + Condition condition=BF.getCondition(); + condition +// .or() + .lParentheses() + .op(Orders_F.userid,Op.eq, 4) + .rParentheses() + ; + + list=suid.select(orders4,condition); + Printer.printList(list); + System.out.println("--------------------:"); + list=suid.select(orders4,condition); + Printer.printList(list); + + } +} diff --git a/src/main/java/org/teasoft/exam/bee/osql/sharding/anno/ShardingSimpleExam7.java b/src/main/java/org/teasoft/exam/bee/osql/sharding/anno/ShardingSimpleExam7.java new file mode 100644 index 0000000..082c8c4 --- /dev/null +++ b/src/main/java/org/teasoft/exam/bee/osql/sharding/anno/ShardingSimpleExam7.java @@ -0,0 +1,45 @@ + +package org.teasoft.exam.bee.osql.sharding.anno; + +import java.util.List; + +import org.teasoft.bee.osql.Suid; +import org.teasoft.exam.bee.osql.sharding.InitSameDsUtil; +import org.teasoft.exam.comm.Printer; +import org.teasoft.honey.osql.shortcut.BF; + +/** + * case 1 Sharding Anno + condtion null + * 使用Sharding注解,分表的分片值,设置javabean; + condition=null + * @Sharding 只能设置分库与分表使用同一分片键. + * Sharding优于全局配置;那要考虑分库与分表用不同的分片键吗???因注解是绑定在字段上的 + * @author Kingstar + * @since 2.0 + * + */ +public class ShardingSimpleExam7 { + + public static void main(String[] args) { + +// ShardingInitData.init(); //使用注解 + InitSameDsUtil.initDS(); + + Suid suid=BF.getSuid(); //1 + Orders orders1=new Orders(); +// orders1.setUserid(1L); TODO 检测设置的与计算的不一样. + orders1.setUserid(0L); + +// Condition condition=BF.getCondition(); +// condition +// .op(Orders_F.userid, Op.eq, 1) +// ; + + + List list=suid.select(orders1); + Printer.printList(list); + System.out.println("--------------------:"); + list=suid.select(orders1); + Printer.printList(list); + + } +} diff --git a/src/main/java/org/teasoft/exam/bee/osql/sharding/anno/ShardingSimpleExam7_1.java b/src/main/java/org/teasoft/exam/bee/osql/sharding/anno/ShardingSimpleExam7_1.java new file mode 100644 index 0000000..20b0502 --- /dev/null +++ b/src/main/java/org/teasoft/exam/bee/osql/sharding/anno/ShardingSimpleExam7_1.java @@ -0,0 +1,49 @@ + +package org.teasoft.exam.bee.osql.sharding.anno; + +import java.util.List; + +import org.teasoft.bee.osql.Suid; +import org.teasoft.exam.bee.osql.sharding.InitSameDsUtil; +import org.teasoft.exam.comm.Printer; +import org.teasoft.honey.osql.shortcut.BF; + +/** + * case 1 + * 使用Sharding注解,分表的分片值,设置javabean; + condition=null; + * 使用了appointTab="orders1" + * @Sharding 只能设置分库与分表使用同一分片键. + * Sharding优于全局配置;那要考虑分库与分表用不同的分片键吗???因注解是绑定在字段上的 + * @author Kingstar + * @since 2.0 + * + */ +public class ShardingSimpleExam7_1 { + + public static void main(String[] args) { + +// ShardingInitData.init(); //使用注解 + InitSameDsUtil.initDS(); + +// 使用了appointTab="orders1" +// @Sharding(dsRule = "userid %2",dsName = "ds",tabRule = "userid %6",appointTab="orders1") + + Suid suid=BF.getSuid(); //1 + Orders orders1=new Orders(); +// orders1.setUserid(1L); TODO 检测设置的与计算的不一样. + orders1.setUserid(0L); + +// Condition condition=BF.getCondition(); +// condition +// .op(Orders_F.userid, Op.eq, 1) +// ; + + + List list=suid.select(orders1); + Printer.printList(list); + System.out.println("--------------------:"); + list=suid.select(orders1); + Printer.printList(list); + + } +} diff --git a/src/main/java/org/teasoft/exam/bee/osql/sharding/anno/ShardingSimpleExam7_2.java b/src/main/java/org/teasoft/exam/bee/osql/sharding/anno/ShardingSimpleExam7_2.java new file mode 100644 index 0000000..2d9c6e8 --- /dev/null +++ b/src/main/java/org/teasoft/exam/bee/osql/sharding/anno/ShardingSimpleExam7_2.java @@ -0,0 +1,41 @@ + +package org.teasoft.exam.bee.osql.sharding.anno; + +import java.util.List; + +import org.teasoft.bee.osql.Suid; +import org.teasoft.exam.bee.osql.sharding.InitSameDsUtil; +import org.teasoft.exam.comm.Printer; +import org.teasoft.honey.osql.shortcut.BF; + +/** + * 使用Sharding注解,分表的分片值,设置javabean; + * @Sharding 只能设置分库与分表使用同一分片键. + * 使用了appointDS="ds0" + * Sharding优于全局配置;那要考虑分库与分表用不同的分片键吗???因注解是绑定在字段上的 + * @author Kingstar + * @since 2.0 + * + */ +public class ShardingSimpleExam7_2 { + + public static void main(String[] args) { + +// ShardingInitData.init();//使用注解 + InitSameDsUtil.initDS(); + +// appointDS="ds0" +// @Sharding(appointDS="ds0",dsRule = "userid %2",dsName = "ds",tabRule = "userid %6") + Suid suid=BF.getSuid(); //1 + Orders2 orders2=new Orders2(); + orders2.setUserid(1L); + + + List list=suid.select(orders2); + Printer.printList(list); + System.out.println("--------------------:"); + list=suid.select(orders2); + Printer.printList(list); + + } +} diff --git a/src/main/java/org/teasoft/exam/bee/osql/sharding/anno/ShardingSimpleExam8.java b/src/main/java/org/teasoft/exam/bee/osql/sharding/anno/ShardingSimpleExam8.java new file mode 100644 index 0000000..bd9a136 --- /dev/null +++ b/src/main/java/org/teasoft/exam/bee/osql/sharding/anno/ShardingSimpleExam8.java @@ -0,0 +1,50 @@ + +package org.teasoft.exam.bee.osql.sharding.anno; + +import java.util.List; + +import org.teasoft.bee.osql.Condition; +import org.teasoft.bee.osql.Op; +import org.teasoft.bee.osql.Suid; +import org.teasoft.exam.bee.osql.sharding.InitSameDsUtil; +import org.teasoft.exam.comm.Printer; +import org.teasoft.honey.osql.shortcut.BF; + +/** + * case 2 + * Sharding Anno+ Condtion 有分片 + * @author Kingstar + * @since 2.0 + * + */ +public class ShardingSimpleExam8 { + + public static void main(String[] args) { + + InitSameDsUtil.initDS(); +// ShardingInitData.init(); //使用注解 + +// @Sharding(tabRule = "userid %6") + Suid suid=BF.getSuid(); //1 + Orders3 orders3=new Orders3(); +// orders3.setUserid(0L); + orders3.setUserid(3L); + + Condition condition=BF.getCondition(); + condition +// .or() + .lParentheses() +// .op(Orders_F.orderid, Op.eq, 2) + .op(Orders_F.userid, Op.eq, 2) + .rParentheses() + ; + + + List list=suid.select(orders3,condition); + Printer.printList(list); + System.out.println("--------------------:"); + list=suid.select(orders3,condition); + Printer.printList(list); + + } +} diff --git a/src/main/java/org/teasoft/exam/bee/osql/sharding/anno/ShardingSimpleExam8_2.java b/src/main/java/org/teasoft/exam/bee/osql/sharding/anno/ShardingSimpleExam8_2.java new file mode 100644 index 0000000..035093e --- /dev/null +++ b/src/main/java/org/teasoft/exam/bee/osql/sharding/anno/ShardingSimpleExam8_2.java @@ -0,0 +1,46 @@ + +package org.teasoft.exam.bee.osql.sharding.anno; + +import java.util.List; + +import org.teasoft.bee.osql.Condition; +import org.teasoft.bee.osql.Op; +import org.teasoft.bee.osql.Suid; +import org.teasoft.exam.bee.osql.sharding.InitSameDsUtil; +import org.teasoft.exam.comm.Printer; +import org.teasoft.honey.osql.shortcut.BF; + +/** + * case 2 + * Sharding Anno+ Condtion有值但不是分片 + * @author Kingstar + * @since 2.0 + * + */ +public class ShardingSimpleExam8_2 { + + public static void main(String[] args) { + +// ShardingInitData.init(); //使用注解 + InitSameDsUtil.initDS(); + +// @Sharding(tabRule = "userid %6") + + Suid suid=BF.getSuid(); //1 + Orders3 orders3=new Orders3(); + orders3.setUserid(1L); + + Condition condition=BF.getCondition(); + condition + .op(Orders_F.name, Op.eq, "test1_6") + ; + + + List list=suid.select(orders3,condition); + Printer.printList(list); + System.out.println("--------------------:"); + list=suid.select(orders3,condition); + Printer.printList(list); + + } +} diff --git a/src/main/java/org/teasoft/exam/bee/osql/sharding/anno/ShardingSimpleExam8_3.java b/src/main/java/org/teasoft/exam/bee/osql/sharding/anno/ShardingSimpleExam8_3.java new file mode 100644 index 0000000..cc9c59b --- /dev/null +++ b/src/main/java/org/teasoft/exam/bee/osql/sharding/anno/ShardingSimpleExam8_3.java @@ -0,0 +1,49 @@ + +package org.teasoft.exam.bee.osql.sharding.anno; + +import java.util.List; + +import org.teasoft.bee.osql.Condition; +import org.teasoft.bee.osql.Op; +import org.teasoft.bee.osql.Suid; +import org.teasoft.exam.bee.osql.sharding.InitSameDsUtil; +import org.teasoft.exam.comm.Printer; +import org.teasoft.honey.osql.shortcut.BF; + +/** + * Sharding Anno+ Condtion 有分片 + * 一库一表 + * @author Kingstar + * @since 2.0 + * + */ +public class ShardingSimpleExam8_3 { + + public static void main(String[] args) { + + InitSameDsUtil.initDS(); +// ShardingInitData.init(); //使用注解 + +// @Sharding(tabRule = "userid %6") + Suid suid=BF.getSuid(); //1 + Orders3 orders3=new Orders3(); +// orders3.setUserid(3L); + + Condition condition=BF.getCondition(); + condition +// .or() + .lParentheses() +// .op(Orders_F.orderid, Op.eq, 2) + .op(Orders_F.userid, Op.eq, 2) + .rParentheses() + ; + + + List list=suid.select(orders3,condition); + Printer.printList(list); + System.out.println("--------------------:"); + list=suid.select(orders3,condition); + Printer.printList(list); + + } +} diff --git a/src/main/java/org/teasoft/exam/bee/osql/sharding/anno/ShardingSimpleExam9.java b/src/main/java/org/teasoft/exam/bee/osql/sharding/anno/ShardingSimpleExam9.java new file mode 100644 index 0000000..b6ca6fe --- /dev/null +++ b/src/main/java/org/teasoft/exam/bee/osql/sharding/anno/ShardingSimpleExam9.java @@ -0,0 +1,45 @@ + +package org.teasoft.exam.bee.osql.sharding.anno; + +import java.util.List; + +import org.teasoft.bee.osql.Suid; +import org.teasoft.exam.bee.osql.sharding.InitSameDsUtil; +import org.teasoft.exam.comm.Printer; +import org.teasoft.honey.osql.shortcut.BF; + +/** + * 没设置有分片值,会产生全域查询 + * @author Kingstar + * @since 2.0 + * + */ +public class ShardingSimpleExam9 { + + public static void main(String[] args) { + +// ShardingInitData.init(); + InitSameDsUtil.initDS(); + + Suid suid=BF.getSuid(); //1 + Orders orders=new Orders(); + //没有加分片值的条件,会查所有 + orders.setRemark("Bee(ORM Framework)"); + +// Condition condition=BF.getCondition(); +// condition +// .op("id", Op.eq, 100001) +// .or() +// .op("id", Op.eq, 100002); + + + List list=suid.select(orders); + Printer.printList(list); + + System.out.println("--------------------:"); + + list=suid.select(orders); + Printer.printList(list); + + } +} diff --git a/src/main/java/org/teasoft/exam/bee/osql/sharding/anno/UseJson.java b/src/main/java/org/teasoft/exam/bee/osql/sharding/anno/UseJson.java new file mode 100644 index 0000000..8f58ee7 --- /dev/null +++ b/src/main/java/org/teasoft/exam/bee/osql/sharding/anno/UseJson.java @@ -0,0 +1,134 @@ +/* + * Copyright 2016-2020 the original author.All rights reserved. + * Kingstar(honeysoft@126.com) + * The license,see the LICENSE file. + */ + +package org.teasoft.exam.bee.osql.sharding.anno; + +import java.util.List; + +import org.teasoft.bee.osql.BeeException; +import org.teasoft.bee.osql.SuidRich; +//import org.teasoft.exam.bee.osql.entity.User; +import org.teasoft.exam.bee.osql.entity.TestUser; +import org.teasoft.exam.bee.osql.sharding.InitSameDsUtil; +import org.teasoft.honey.osql.core.BeeFactory; +import org.teasoft.honey.osql.core.Logger; +import org.teasoft.honey.sharding.HintManager; +import org.teasoft.honey.util.Printer; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.JavaType; +import com.fasterxml.jackson.databind.ObjectMapper; + +/** + * 没有分片. + * 可以使用bee.dosql.multiDS.defalutDS=ds0, 不分片的,就使用默认库。 + * @author Kingstar + * @since 2.0 + */ +public class UseJson { + public static void main(String[] args) { + InitSameDsUtil.initDS(); + test(); + } + public static void test() { + try{ + SuidRich suidRich = BeeFactory.getHoneyFactory().getSuidRich(); + +/* String json = suidRich.selectJson(new TestUser()); + Logger.info("selectJson(new TestUser()):"); + Logger.info(json); + + List list=toEntity(json, List.class, TestUser.class); + Printer.printList(list); + + String json2=toJson(list); + Logger.info(json2);*/ + + HintManager.setTableName("orders2"); + Orders orders=new Orders(); + String json = suidRich.selectJson(orders); + Logger.info("selectJson(new Orders()):"); + Logger.info(json); + + List list=toEntity(json, List.class, orders.getClass()); + Printer.printList(list); + + String json2=toJson(list); + Logger.info(json2); + + + +// List list=new ArrayList<>(); +// String json2=toJson(list); +// Logger.info(json2); +// +// ObjectMapper mapper = new ObjectMapper(); +// +// TestUser user[] = mapper.readValue(json, TestUser[].class); +// Logger.info("将直接查询的json转成对象:"); +// for (int i = 0; i < user.length; i++) { +// Logger.info(user[i].toString()); +// } +// List list1 = suidRich.select(new TestUser()); //select +// //User user2=new User();user2.setId(800001); +// //List list1 = suidRich.select(user2); //select +// for (int i = 0; i < list1.size(); i++) { +// Logger.info(list1.get(i).toString()); +// } +// +// //User user3=new User();user3.setId(800002); +// //List list3 = suidRich.select(user3); //select +// +// +// String json2 = suidRich.selectJson(new Orders()); +// Logger.info("selectJson(new Orders()):"); +// Logger.info(json2); +// +// ObjectMapper mapper2 = new ObjectMapper(); +// +// Orders orders[] = mapper2.readValue(json2, Orders[].class); +// Logger.info("将直接查询的json转成对象:"); +// for (int i = 0; i < orders.length; i++) { +// Logger.info(orders[i].toString()); +// } +// List list2 = suidRich.select(new Orders()); //select +// for (int i = 0; i < list2.size(); i++) { +// Logger.info(list2.get(i).toString()); +// } + + + } catch (BeeException e) { + Logger.error("In UseJson (BeeException):" + e.getMessage()); + e.printStackTrace(); + } catch (Exception e) { + Logger.error("In UseJson (Exception):" + e.getMessage()); + e.printStackTrace(); + } + } + + public static T toEntity(String json, Class clazz, Class elementClass) { + try { + if(json==null) return null; + ObjectMapper mapper = new ObjectMapper(); + JavaType javaType = mapper.getTypeFactory().constructParametricType(clazz, elementClass); + return (T)mapper.readValue(json, javaType); + + } catch (Exception e) { + Logger.error(e.getMessage(), e); + } + return null; + } + + public static String toJson(Object obj) { + try { + ObjectMapper mapper = new ObjectMapper(); + return mapper.writeValueAsString(obj); + } catch (JsonProcessingException e) { + Logger.error(e.getMessage(), e); + } + return null; + } +} diff --git a/src/main/java/org/teasoft/exam/bee/osql/sharding/anno/UseJson2.java b/src/main/java/org/teasoft/exam/bee/osql/sharding/anno/UseJson2.java new file mode 100644 index 0000000..8021d58 --- /dev/null +++ b/src/main/java/org/teasoft/exam/bee/osql/sharding/anno/UseJson2.java @@ -0,0 +1,99 @@ +/* + * Copyright 2016-2020 the original author.All rights reserved. + * Kingstar(honeysoft@126.com) + * The license,see the LICENSE file. + */ + +package org.teasoft.exam.bee.osql.sharding.anno; + +import java.util.List; + +import org.teasoft.bee.osql.BeeException; +import org.teasoft.bee.osql.Condition; +import org.teasoft.bee.osql.SuidRich; +//import org.teasoft.exam.bee.osql.entity.User; +import org.teasoft.exam.bee.osql.entity.TestUser; +import org.teasoft.exam.bee.osql.sharding.InitSameDsUtil; +import org.teasoft.honey.osql.core.BeeFactory; +import org.teasoft.honey.osql.core.Logger; +import org.teasoft.honey.osql.shortcut.BF; +import org.teasoft.honey.util.Printer; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.JavaType; +import com.fasterxml.jackson.databind.ObjectMapper; + +/** + * 没有分片. + * 全域查询,分页 + * @author Kingstar + * @since 2.0 + */ +public class UseJson2 { + public static void main(String[] args) { + InitSameDsUtil.initDS(); + test(); + } + public static void test() { + try{ + SuidRich suidRich = BeeFactory.getHoneyFactory().getSuidRich(); + +/* String json = suidRich.selectJson(new TestUser()); + Logger.info("selectJson(new TestUser()):"); + Logger.info(json); + + List list=toEntity(json, List.class, TestUser.class); + Printer.printList(list); + + String json2=toJson(list); + Logger.info(json2);*/ + +// HintManager.setTableName("orders2"); + + Condition condition=BF.getCondition(); + condition.start(0).size(2); + + Orders orders=new Orders(); + String json = suidRich.selectJson(orders,condition); //分页 + Logger.info("selectJson(new Orders()):"); + Logger.info(json); + + List list=toEntity(json, List.class, orders.getClass()); + Printer.printList(list); + + String json2=toJson(list); + Logger.info(json2); + + + } catch (BeeException e) { + Logger.error("In UseJson (BeeException):" + e.getMessage()); + e.printStackTrace(); + } catch (Exception e) { + Logger.error("In UseJson (Exception):" + e.getMessage()); + e.printStackTrace(); + } + } + + public static T toEntity(String json, Class clazz, Class elementClass) { + try { + if(json==null) return null; + ObjectMapper mapper = new ObjectMapper(); + JavaType javaType = mapper.getTypeFactory().constructParametricType(clazz, elementClass); + return (T)mapper.readValue(json, javaType); + + } catch (Exception e) { + Logger.error(e.getMessage(), e); + } + return null; + } + + public static String toJson(Object obj) { + try { + ObjectMapper mapper = new ObjectMapper(); + return mapper.writeValueAsString(obj); + } catch (JsonProcessingException e) { + Logger.error(e.getMessage(), e); + } + return null; + } +} diff --git a/src/main/java/org/teasoft/exam/bee/osql/sharding/anno/UseJson3.java b/src/main/java/org/teasoft/exam/bee/osql/sharding/anno/UseJson3.java new file mode 100644 index 0000000..b4e7099 --- /dev/null +++ b/src/main/java/org/teasoft/exam/bee/osql/sharding/anno/UseJson3.java @@ -0,0 +1,107 @@ +/* + * Copyright 2016-2020 the original author.All rights reserved. + * Kingstar(honeysoft@126.com) + * The license,see the LICENSE file. + */ + +package org.teasoft.exam.bee.osql.sharding.anno; + +import java.util.List; + +import org.teasoft.bee.osql.BeeException; +import org.teasoft.bee.osql.Condition; +import org.teasoft.bee.osql.Op; +import org.teasoft.bee.osql.SuidRich; +//import org.teasoft.exam.bee.osql.entity.User; +import org.teasoft.exam.bee.osql.entity.TestUser; +import org.teasoft.exam.bee.osql.sharding.InitSameDsUtil; +import org.teasoft.honey.osql.core.BeeFactory; +import org.teasoft.honey.osql.core.Logger; +import org.teasoft.honey.osql.shortcut.BF; +import org.teasoft.honey.util.Printer; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.JavaType; +import com.fasterxml.jackson.databind.ObjectMapper; + +/** + * 分片, 分页+ 多表但同一个库(使用union all) + * + * @author Kingstar + * @since 2.0 + */ +public class UseJson3 { + public static void main(String[] args) { + InitSameDsUtil.initDS(); + test(); + } + public static void test() { + try{ + SuidRich suidRich = BeeFactory.getHoneyFactory().getSuidRich(); + +/* String json = suidRich.selectJson(new TestUser()); + Logger.info("selectJson(new TestUser()):"); + Logger.info(json); + + List list=toEntity(json, List.class, TestUser.class); + Printer.printList(list); + + String json2=toJson(list); + Logger.info(json2);*/ + +// HintManager.setTableName("orders2"); + + Condition condition=BF.getCondition(); + condition.start(0).size(2); + + condition + .op(Orders_F.userid, Op.eq, 0) + .or() + .op(Orders_F.userid, Op.eq, 1) + ; + + + Orders3 orders=new Orders3(); + String json = suidRich.selectJson(orders,condition); //分页 + Logger.info("selectJson(new Orders()):"); + Logger.info(json); + + List list=toEntity(json, List.class, orders.getClass()); + Printer.printList(list); + + String json2=toJson(list); + Logger.info(json2); + + + } catch (BeeException e) { + Logger.error("In UseJson (BeeException):" + e.getMessage()); + e.printStackTrace(); + } catch (Exception e) { + Logger.error("In UseJson (Exception):" + e.getMessage()); + e.printStackTrace(); + } + } + + public static T toEntity(String json, Class clazz, Class elementClass) { + try { + if(json==null) return null; + ObjectMapper mapper = new ObjectMapper(); + JavaType javaType = mapper.getTypeFactory().constructParametricType(clazz, elementClass); + return (T)mapper.readValue(json, javaType); + + } catch (Exception e) { + Logger.error(e.getMessage(), e); + } + return null; + } + + public static String toJson(Object obj) { + try { + ObjectMapper mapper = new ObjectMapper(); + return mapper.writeValueAsString(obj); + } catch (JsonProcessingException e) { + Logger.error(e.getMessage(), e); + } + return null; + } +} diff --git a/src/main/java/org/teasoft/exam/bee/osql/sharding/anno/UseJson4.java b/src/main/java/org/teasoft/exam/bee/osql/sharding/anno/UseJson4.java new file mode 100644 index 0000000..281d758 --- /dev/null +++ b/src/main/java/org/teasoft/exam/bee/osql/sharding/anno/UseJson4.java @@ -0,0 +1,111 @@ +/* + * Copyright 2016-2020 the original author.All rights reserved. + * Kingstar(honeysoft@126.com) + * The license,see the LICENSE file. + */ + +package org.teasoft.exam.bee.osql.sharding.anno; + +import java.util.List; + +import org.teasoft.bee.osql.BeeException; +import org.teasoft.bee.osql.Condition; +import org.teasoft.bee.osql.Op; +import org.teasoft.bee.osql.SuidRich; +//import org.teasoft.exam.bee.osql.entity.User; +import org.teasoft.exam.bee.osql.entity.TestUser; +import org.teasoft.exam.bee.osql.sharding.InitSameDsUtil; +import org.teasoft.honey.osql.core.BeeFactory; +import org.teasoft.honey.osql.core.Logger; +import org.teasoft.honey.osql.shortcut.BF; +import org.teasoft.honey.util.Printer; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.JavaType; +import com.fasterxml.jackson.databind.ObjectMapper; + +/** + * 分片, 分页+ 多表多库 + * + * @author Kingstar + * @since 2.0 + */ +public class UseJson4 { + public static void main(String[] args) { + InitSameDsUtil.initDS(); + test(); + } + public static void test() { + try{ + SuidRich suidRich = BeeFactory.getHoneyFactory().getSuidRich(); + +/* String json = suidRich.selectJson(new TestUser()); + Logger.info("selectJson(new TestUser()):"); + Logger.info(json); + + List list=toEntity(json, List.class, TestUser.class); + Printer.printList(list); + + String json2=toJson(list); + Logger.info(json2);*/ + +// HintManager.setTableName("orders2"); + + Condition condition=BF.getCondition(); + condition.start(0).size(2); + + condition + .op(Orders_F.userid, Op.eq, 0) + .or() + .op(Orders_F.userid, Op.eq, 1) + .or() + .op(Orders_F.userid, Op.eq, 4) + ; + + + Orders3 orders=new Orders3(); + String json = suidRich.selectJson(orders,condition); //分页 + Logger.info("selectJson(new Orders()):"); + Logger.info(json); + + List list=toEntity(json, List.class, orders.getClass()); + Printer.printList(list); + +// String json2=toJson(list); +// Logger.info(json2); + + suidRich.selectJson(orders,condition); //测试缓存. + + + } catch (BeeException e) { + Logger.error("In UseJson (BeeException):" + e.getMessage()); + e.printStackTrace(); + } catch (Exception e) { + Logger.error("In UseJson (Exception):" + e.getMessage()); + e.printStackTrace(); + } + } + + public static T toEntity(String json, Class clazz, Class elementClass) { + try { + if(json==null) return null; + ObjectMapper mapper = new ObjectMapper(); + JavaType javaType = mapper.getTypeFactory().constructParametricType(clazz, elementClass); + return (T)mapper.readValue(json, javaType); + + } catch (Exception e) { + Logger.error(e.getMessage(), e); + } + return null; + } + + public static String toJson(Object obj) { + try { + ObjectMapper mapper = new ObjectMapper(); + return mapper.writeValueAsString(obj); + } catch (JsonProcessingException e) { + Logger.error(e.getMessage(), e); + } + return null; + } +} diff --git a/src/main/java/org/teasoft/exam/bee/osql/sharding/anno/UseJson5.java b/src/main/java/org/teasoft/exam/bee/osql/sharding/anno/UseJson5.java new file mode 100644 index 0000000..dae0a48 --- /dev/null +++ b/src/main/java/org/teasoft/exam/bee/osql/sharding/anno/UseJson5.java @@ -0,0 +1,107 @@ +/* + * Copyright 2016-2020 the original author.All rights reserved. + * Kingstar(honeysoft@126.com) + * The license,see the LICENSE file. + */ + +package org.teasoft.exam.bee.osql.sharding.anno; + +import java.util.List; + +import org.teasoft.bee.osql.BeeException; +import org.teasoft.bee.osql.Condition; +import org.teasoft.bee.osql.Op; +import org.teasoft.bee.osql.SuidRich; +//import org.teasoft.exam.bee.osql.entity.User; +import org.teasoft.exam.bee.osql.entity.TestUser; +import org.teasoft.exam.bee.osql.sharding.InitSameDsUtil; +import org.teasoft.honey.osql.core.BeeFactory; +import org.teasoft.honey.osql.core.Logger; +import org.teasoft.honey.osql.shortcut.BF; +import org.teasoft.honey.util.Printer; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.JavaType; +import com.fasterxml.jackson.databind.ObjectMapper; + +/** + * 分片, 分页+ 一库一表 + * + * @author Kingstar + * @since 2.0 + */ +public class UseJson5 { + public static void main(String[] args) { + InitSameDsUtil.initDS(); + test(); + } + public static void test() { + try{ + SuidRich suidRich = BeeFactory.getHoneyFactory().getSuidRich(); + +/* String json = suidRich.selectJson(new TestUser()); + Logger.info("selectJson(new TestUser()):"); + Logger.info(json); + + List list=toEntity(json, List.class, TestUser.class); + Printer.printList(list); + + String json2=toJson(list); + Logger.info(json2);*/ + +// HintManager.setTableName("orders2"); + + Condition condition=BF.getCondition(); + condition.start(0).size(2); + + condition + .op(Orders_F.userid, Op.eq, 0) +// .or() +// .op(Orders_F.userid, Op.eq, 1) + ; + + + Orders3 orders=new Orders3(); + String json = suidRich.selectJson(orders,condition); //分页 + Logger.info("selectJson(new Orders()):"); + Logger.info(json); + + List list=toEntity(json, List.class, orders.getClass()); + Printer.printList(list); + + String json2=toJson(list); + Logger.info(json2); + + + } catch (BeeException e) { + Logger.error("In UseJson (BeeException):" + e.getMessage()); + e.printStackTrace(); + } catch (Exception e) { + Logger.error("In UseJson (Exception):" + e.getMessage()); + e.printStackTrace(); + } + } + + public static T toEntity(String json, Class clazz, Class elementClass) { + try { + if(json==null) return null; + ObjectMapper mapper = new ObjectMapper(); + JavaType javaType = mapper.getTypeFactory().constructParametricType(clazz, elementClass); + return (T)mapper.readValue(json, javaType); + + } catch (Exception e) { + Logger.error(e.getMessage(), e); + } + return null; + } + + public static String toJson(Object obj) { + try { + ObjectMapper mapper = new ObjectMapper(); + return mapper.writeValueAsString(obj); + } catch (JsonProcessingException e) { + Logger.error(e.getMessage(), e); + } + return null; + } +} diff --git a/src/main/java/org/teasoft/exam/bee/osql/sharding/moretable/MoreTableExam.java b/src/main/java/org/teasoft/exam/bee/osql/sharding/moretable/MoreTableExam.java new file mode 100644 index 0000000..4dfe736 --- /dev/null +++ b/src/main/java/org/teasoft/exam/bee/osql/sharding/moretable/MoreTableExam.java @@ -0,0 +1,147 @@ +/* + * Copyright 2016-2020 the original author.All rights reserved. + * Kingstar(honeysoft@126.com) + * The license,see the LICENSE file. + */ + +package org.teasoft.exam.bee.osql.sharding.moretable; + +import java.util.List; + +import org.teasoft.bee.osql.BeeException; +import org.teasoft.bee.osql.Condition; +import org.teasoft.bee.osql.MoreTable; +import org.teasoft.bee.osql.Op; +import org.teasoft.exam.bee.osql.sharding.InitSameDsUtil; +import org.teasoft.exam.bee.osql.sharding.ShardingInitData; +import org.teasoft.exam.bee.osql.sharding.moretable.entity.Myorders; +import org.teasoft.exam.bee.osql.sharding.moretable.entity.Ordersdetail; +import org.teasoft.exam.comm.Printer; +import org.teasoft.honey.osql.core.BeeFactory; +import org.teasoft.honey.osql.core.Logger; +import org.teasoft.honey.osql.shortcut.BF; + +/** + * @author Kingstar + * @since 2.0 + */ +public class MoreTableExam { + + public static void main(String[] args) { + + ShardingInitData.init(); // 分片 + InitSameDsUtil.initDS(); + + test(); + } + + public static void test() { + try { + MoreTable moreTable = BeeFactory.getHoneyFactory().getMoreTable(); + + Myorders orders1 = new Myorders(); + orders1.setUserid(1L); + +// //一库一表 +// List list1 = moreTable.select(orders1, 0, 10); //select 查询前10条记录 +// Logger.info("size of records:"+list1.size() + ""); +// Printer.printList(list1); + + + //一库多表 + Condition condition = BF.getCondition(); + condition +// .op("orders.Userid", Op.eq, 2) + .op("userid", Op.eq, 2) + .start(0).size(10) //分页 + ; + + Ordersdetail ordersdetail=new Ordersdetail(); +// ordersdetail.setRemark("aaa"); + orders1.setOrdersdetail(ordersdetail); + + List list2 = moreTable.select(orders1, condition); //select + Logger.info("size of records:"+list2.size() + ""); + Printer.printList(list2); + + +// //全域查询. 但分页不准确. 数量,排序 TODO +// List list3 = moreTable.select(new Myorders(), 0, 10); // select 查询前10条记录 +// Logger.info("size of records:" + list3.size() + ""); +// Printer.printList(list3); + + + + + + + + + +// Orders ordersUpdate=new Orders(); +// ordersUpdate.setUserid("bee"); +// ordersUpdate.setName("Bee"); +// Condition conditionUpdate=BeeFactoryHelper.getCondition(); +// conditionUpdate.op("name", Op.eq, null); +// SuidRich suidRich=BeeFactoryHelper.getSuidRich(); +// suidRich.update(ordersUpdate, "name", conditionUpdate); +// +// // condition.selectField("orders.id,test_user.id,userid,total,orders.createtime"); +// condition.selectField("orders.id,testUser.id,userid,total,orders.createtime");//只查询部分字段. 没有指定查询的值都为null +// List list3 = moreTable.select(orders1, condition); //select +// Logger.info("size of records:"+list3.size() + ""); +// for (int i = 0; i < list3.size(); i++) { +// Logger.info(list3.get(i).toString()); +// } +// +// //V1.9 +// Assigncourse assigncourse=new Assigncourse(); +// assigncourse.setStatus("1"); +// +// Assignexam assignexam=new Assignexam(); //主表 +// assignexam.setStatus("1"); +// assignexam.setAssigncourse(assigncourse); +// +// moreTable.select(assignexam); +// +// assignexam.setClassno("aaa"); +//// System.out.println("---------------select before----------------------"); +//// moreTable.select(assignexam); +//// System.out.println("---------------select after----------------------"); +// +// Assigncourse assigncourse2=new Assigncourse(); +// assigncourse2.setId(344343344343L); +// Suid suid = BeeFactory.getHoneyFactory().getSuid(); +//// System.out.println("---------------delete before----------------------"); +// suid.delete(assigncourse2); +// +// moreTable.select(assignexam);//test cache +// +// List list4 =moreTable.setDynamicParameter("month", "_202007").select(orders1, 0, 10); +// Printer.printList(list4); +// List list5 =moreTable.select(orders1, 0, 10); +// Printer.printList(list5); +// +// Condition distinctCondition0=BeeFactoryHelper.getCondition(); +// distinctCondition0 +// .selectDistinctField("assignexam.id") +//// .selectFun(FunctionType.MAX, "assignexam.id") +//// .selectField("assignexam.id") +// ; +// moreTable.select(new Assignexam(), distinctCondition0); +// +// Condition distinctCondition1=BeeFactoryHelper.getCondition(); +// distinctCondition1 +// .selectFun(FunctionType.MAX, "assignexam.id") +// ; +// moreTable.select(new Assignexam(), distinctCondition1); + + } catch (BeeException e) { + e.printStackTrace(); + Logger.error("In MoreTableExam (BeeException):"+e.getMessage()); + }catch (Exception e) { + Logger.error("In MoreTableExam (Exception):"+e.getMessage()); + e.printStackTrace(); + } + } +} diff --git a/src/main/java/org/teasoft/exam/bee/osql/sharding/moretable/MoreTableExam11.java b/src/main/java/org/teasoft/exam/bee/osql/sharding/moretable/MoreTableExam11.java new file mode 100644 index 0000000..b83e5e6 --- /dev/null +++ b/src/main/java/org/teasoft/exam/bee/osql/sharding/moretable/MoreTableExam11.java @@ -0,0 +1,58 @@ +/* + * Copyright 2016-2020 the original author.All rights reserved. + * Kingstar(honeysoft@126.com) + * The license,see the LICENSE file. + */ + +package org.teasoft.exam.bee.osql.sharding.moretable; + +import org.teasoft.bee.osql.BeeException; +import org.teasoft.bee.osql.MoreTable; +import org.teasoft.bee.osql.Suid; +import org.teasoft.exam.bee.osql.moretable.entity.Assigncourse; +import org.teasoft.exam.bee.osql.moretable.entity.Assignexam; +import org.teasoft.honey.osql.core.BeeFactory; +import org.teasoft.honey.osql.core.Logger; + +/** + * @author Kingstar + * @since 1.7 + */ +public class MoreTableExam11 { + + public static void main(String[] args) { + test(); + } + + public static void test() { + try { + MoreTable moreTable = BeeFactory.getHoneyFactory().getMoreTable(); + + + //V1.9 + Assigncourse assigncourse=new Assigncourse(); + assigncourse.setStatus("1"); + + Assignexam assignexam=new Assignexam(); //主表 + assignexam.setStatus("1"); + assignexam.setAssigncourse(assigncourse); + + moreTable.select(assignexam); + + assignexam.setClassno("aaa"); + moreTable.select(assignexam); + + Assigncourse assigncourse2=new Assigncourse(); + assigncourse2.setId(344343344343L); + Suid suid = BeeFactory.getHoneyFactory().getSuid(); + suid.delete(assigncourse2); + + } catch (BeeException e) { + e.printStackTrace(); + Logger.error("In MoreTableExam (BeeException):"+e.getMessage()); + }catch (Exception e) { + Logger.error("In MoreTableExam (Exception):"+e.getMessage()); + e.printStackTrace(); + } + } +} diff --git a/src/main/java/org/teasoft/exam/bee/osql/sharding/moretable/MoreTableExam198.java b/src/main/java/org/teasoft/exam/bee/osql/sharding/moretable/MoreTableExam198.java new file mode 100644 index 0000000..a8a12f3 --- /dev/null +++ b/src/main/java/org/teasoft/exam/bee/osql/sharding/moretable/MoreTableExam198.java @@ -0,0 +1,99 @@ +/* + * Copyright 2016-2021 the original author.All rights reserved. + * Kingstar(honeysoft@126.com) + * The license,see the LICENSE file. + */ + +package org.teasoft.exam.bee.osql.sharding.moretable; + +import java.util.List; + +import org.teasoft.bee.osql.BeeException; +import org.teasoft.bee.osql.MoreTable; +import org.teasoft.exam.bee.osql.moretable.entity.Orders20; +import org.teasoft.exam.comm.Printer; +import org.teasoft.honey.osql.core.BeeFactory; +import org.teasoft.honey.osql.core.Logger; + +/** + * @author Kingstar + * @since 1.9.8 + */ +public class MoreTableExam198 { + + public static void main(String[] args) { + test(); + } + + public static void test() { + try { + MoreTable moreTable = BeeFactory.getHoneyFactory().getMoreTable(); + +// TestUser2 testuser2 = new TestUser2(); +// moreTable.select(testuser2); + +// TestUser11 testuser11 = new TestUser11(); +// moreTable.select(testuser11); + +// Assignexam assignexam=new Assignexam(); +// assignexam.setCreater("SYS"); +// testuser11.setAssignexam(assignexam); +// moreTable.select(testuser11); +// +// Assigncourse assigncourse=new Assigncourse(); +// assigncourse.setName("test two layer"); +// assignexam.setAssigncourse(assigncourse); +// moreTable.select(testuser11); +// +// Condition condition=BeeFactoryHelper.getCondition(); +// condition.opOn("assignexam.status", Op.eq, "1"); +// moreTable.select(testuser11,condition); +// +// Condition condition2=BeeFactoryHelper.getCondition(); +// condition2.opOn("assigncourse.status", Op.eq, "1"); +// condition2.opOn("assigncourse.creater", Op.eq, "all"); //value不是字段, 与连接的表达式两边都是字段不一样. +// moreTable.select(testuser11,condition2); +// +// +// Condition condition3=BeeFactoryHelper.getCondition(); +//// condition3.opOn("assignexam.status", Op.eq, "1"); +// condition3.opOn("assigncourse.status", Op.eq, "2"); +// condition3.opOn("assignexam.status", Op.eq, "1");// change order +// condition3.opOn("assigncourse.creater", Op.eq, "all"); +// moreTable.select(testuser11,condition3); +// +// +// TestUser011 testuser011 = new TestUser011(); +// Condition condition4=BeeFactoryHelper.getCondition(); +//// condition4.opOn("table2.status", Op.eq, "1"); +// condition4.opOn("assigncourse.status", Op.eq, "2"); +// condition4.opOn("table2.status", Op.eq, "1");// change order 别名 +// condition4.opOn("assigncourse.creater", Op.eq, "all"); +// moreTable.select(testuser011,condition4); + + + + Orders20 orders20=new Orders20(); + List list20=moreTable.select(orders20); + Printer.printList(list20); + +// Orders20 orders20_2=new Orders20(); +// Condition condition5=BeeFactoryHelper.getCondition(); +// condition5.selectField("orders.id,orders.name,TestUser.id"); +// List list20_2=moreTable.select(orders20_2,condition5); +// Printer.printList(list20_2); + + +// Noid noid=new Noid(); //无从表注解 +// moreTable.select(noid); + + } catch (BeeException e) { + e.printStackTrace(); + Logger.error("In MoreTableExam (BeeException):" + e.getMessage()); + } catch (Exception e) { + Logger.error("In MoreTableExam (Exception):" + e.getMessage()); + e.printStackTrace(); + } + } + +} \ No newline at end of file diff --git a/src/main/java/org/teasoft/exam/bee/osql/sharding/moretable/MoreTableFun.java b/src/main/java/org/teasoft/exam/bee/osql/sharding/moretable/MoreTableFun.java new file mode 100644 index 0000000..9cf5813 --- /dev/null +++ b/src/main/java/org/teasoft/exam/bee/osql/sharding/moretable/MoreTableFun.java @@ -0,0 +1,50 @@ +/* + * Copyright 2016-2021 the original author.All rights reserved. + * Kingstar(honeysoft@126.com) + * The license,see the LICENSE file. + */ + +package org.teasoft.exam.bee.osql.sharding.moretable; + +import java.util.List; + +import org.teasoft.bee.osql.BeeException; +import org.teasoft.bee.osql.Condition; +import org.teasoft.bee.osql.MoreTable; +import org.teasoft.exam.bee.osql.moretable.entity.Assignexam; +import org.teasoft.exam.comm.Printer; +import org.teasoft.honey.osql.core.BeeFactory; +import org.teasoft.honey.osql.core.BeeFactoryHelper; +import org.teasoft.honey.osql.core.Logger; + +/** + * @author Kingstar + * @since 1.9.8 + */ +public class MoreTableFun { + + public static void main(String[] args) { + test(); + } + + public static void test() { + try { + MoreTable moreTable = BeeFactory.getHoneyFactory().getMoreTable(); + Condition distinctCondition0 = BeeFactoryHelper.getCondition(); + distinctCondition0.selectDistinctField("assignexam.id") + // .selectFun(FunctionType.MAX, "assignexam.id") + // .selectField("assignexam.id") + ; + List list=moreTable.select(new Assignexam(), distinctCondition0); + Printer.printList(list); + + } catch (BeeException e) { + e.printStackTrace(); + Logger.error("In MoreTableExam (BeeException):" + e.getMessage()); + } catch (Exception e) { + Logger.error("In MoreTableExam (Exception):" + e.getMessage()); + e.printStackTrace(); + } + } + +} diff --git a/src/main/java/org/teasoft/exam/bee/osql/sharding/moretable/ShardingBatchInsert2.java b/src/main/java/org/teasoft/exam/bee/osql/sharding/moretable/ShardingBatchInsert2.java new file mode 100644 index 0000000..0e41cdd --- /dev/null +++ b/src/main/java/org/teasoft/exam/bee/osql/sharding/moretable/ShardingBatchInsert2.java @@ -0,0 +1,81 @@ +/* + * Copyright 2016-2019 the original author.All rights reserved. + * Kingstar(honeysoft@126.com) + * The license,see the LICENSE file. + */ + +package org.teasoft.exam.bee.osql.sharding.moretable; + +import java.math.BigDecimal; + +import org.teasoft.bee.osql.SuidRich; +import org.teasoft.exam.bee.osql.sharding.InitSameDsUtil; +import org.teasoft.exam.bee.osql.sharding.ShardingInitData; +import org.teasoft.exam.bee.osql.sharding.moretable.entity.Myorders; +import org.teasoft.exam.bee.osql.sharding.moretable.entity.Ordersdetail; +import org.teasoft.honey.osql.core.BeeFactory; +import org.teasoft.honey.osql.core.Logger; + +/** + * 批量插入的分片 + * @author Kingstar + * @since 2.0 + */ +public class ShardingBatchInsert2 { + + private static SuidRich suidRich = BeeFactory.getHoneyFactory().getSuidRich(); + + public static void main(String[] args) { + + ShardingInitData.init(); // 分片 + InitSameDsUtil.initDS(); + + test(); + } + + public static void test() { + + int SIZE=20; + + Myorders[] ordersArray = new Myorders[SIZE]; + Ordersdetail[] OrdersdetailArray = new Ordersdetail[SIZE*2]; + for (int i = 0; i < SIZE; i++) { + Myorders orders = new Myorders(); + orders.setUserid((long) i); + orders.setOrderid((long) i); + orders.setTotal(new BigDecimal(91 + i)); + orders.setRemark("testOneTime" + i); + ordersArray[i] = orders; + + Ordersdetail ordersdetail=new Ordersdetail(); + ordersdetail.setUserid((long) i); + ordersdetail.setOrderid((long) i); + ordersdetail.setItem((long) i*2); + ordersdetail.setRemark("分片测试"+i*2); + OrdersdetailArray[i*2]=ordersdetail; + + Ordersdetail ordersdetail2=new Ordersdetail(); + ordersdetail2.setUserid((long) i); + ordersdetail2.setOrderid((long) i); + ordersdetail2.setItem((long) (i*2+1)); + ordersdetail2.setRemark("分片测试"+(i*2+1)); + OrdersdetailArray[i*2+1]=ordersdetail2; + } +// int insertArray = suidRich.insert(ordersArray, 3, "id,createtime,updatetime");// batch insert +// Logger.info(insertArray); + + int insertArray2 = suidRich.insert(OrdersdetailArray, 3, "id");// batch insert + Logger.info(insertArray2); + +// int r=0; +// long t1=System.currentTimeMillis(); +// for (int i = 0; i < 1000; i++) { +// int b=suidRich.insert(ordersArray, 3, "id,createtime,updatetime");// batch insert +// r+=b; +// } +// long t2=System.currentTimeMillis(); +// System.out.println("用时:"+(t2-t1)); +// Logger.info(r); + } + +} diff --git a/src/main/java/org/teasoft/exam/bee/osql/sharding/moretable/entity/Myorders.java b/src/main/java/org/teasoft/exam/bee/osql/sharding/moretable/entity/Myorders.java new file mode 100644 index 0000000..857387e --- /dev/null +++ b/src/main/java/org/teasoft/exam/bee/osql/sharding/moretable/entity/Myorders.java @@ -0,0 +1,141 @@ +package org.teasoft.exam.bee.osql.sharding.moretable.entity; + +import java.io.Serializable; +import java.math.BigDecimal; + +import org.teasoft.bee.osql.annotation.JoinTable; +import org.teasoft.bee.osql.annotation.JoinType; + +/** + * @author Honey + * Create on 2022-08-23 23:31:36 + */ +public class Myorders implements Serializable { + + private static final long serialVersionUID = 1596710362247L; + + @JoinTable(mainField="userid,orderid", subField="userid,orderid", joinType=JoinType.JOIN) + Ordersdetail ordersdetail; + + private Long id; + private Long userid; + private Long orderid; + private String name; + private BigDecimal total; + private String createtime; + private String remark; + private String sequence; + private String abc; + private String updatetime; + + public Ordersdetail getOrdersdetail() { + return ordersdetail; + } + + public void setOrdersdetail(Ordersdetail ordersdetail) { + this.ordersdetail = ordersdetail; + } + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public Long getUserid() { + return userid; + } + + public void setUserid(Long userid) { + this.userid = userid; + } + + public Long getOrderid() { + return orderid; + } + + public void setOrderid(Long orderid) { + this.orderid = orderid; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public BigDecimal getTotal() { + return total; + } + + public void setTotal(BigDecimal total) { + this.total = total; + } + + public String getCreatetime() { + return createtime; + } + + public void setCreatetime(String createtime) { + this.createtime = createtime; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public String getSequence() { + return sequence; + } + + public void setSequence(String sequence) { + this.sequence = sequence; + } + + public String getAbc() { + return abc; + } + + public void setAbc(String abc) { + this.abc = abc; + } + + public String getUpdatetime() { + return updatetime; + } + + public void setUpdatetime(String updatetime) { + this.updatetime = updatetime; + } + + public String toString(){ + StringBuilder str=new StringBuilder(); + str.append("Orders1["); + str.append("id=").append(id); + str.append(",userid=").append(userid); + str.append(",orderid=").append(orderid); + str.append(",name=").append(name); + str.append(",total=").append(total); + str.append(",createtime=").append(createtime); + str.append(",remark=").append(remark); + str.append(",sequence=").append(sequence); + str.append(",abc=").append(abc); + str.append(",updatetime=").append(updatetime); + + if(ordersdetail==null) + str.append(",user").append("=null"); + else + str.append(",").append(ordersdetail.toString()); + + str.append("]"); + return str.toString(); + } +} \ No newline at end of file diff --git a/src/main/java/org/teasoft/exam/bee/osql/sharding/moretable/entity/Orders_F.java b/src/main/java/org/teasoft/exam/bee/osql/sharding/moretable/entity/Orders_F.java new file mode 100644 index 0000000..0d1ecf7 --- /dev/null +++ b/src/main/java/org/teasoft/exam/bee/osql/sharding/moretable/entity/Orders_F.java @@ -0,0 +1,23 @@ +package org.teasoft.exam.bee.osql.sharding.moretable.entity; + +/** + * Relative field name for Javabean Orders1 + * @author Honey + * Create on 2022-08-23 23:31:36 + */ +public class Orders_F { + + private Orders_F() {} + + public static final String id = "id"; + public static final String userid = "userid"; + public static final String orderid = "orderid"; + public static final String name = "name"; + public static final String total = "total"; + public static final String createtime = "createtime"; + public static final String remark = "remark"; + public static final String sequence = "sequence"; + public static final String abc = "abc"; + public static final String updatetime = "updatetime"; + public static final String ALL_NAMES = "id,userid,orderid,name,total,createtime,remark,sequence,abc,updatetime"; +} \ No newline at end of file diff --git a/src/main/java/org/teasoft/exam/bee/osql/sharding/moretable/entity/Ordersdetail.java b/src/main/java/org/teasoft/exam/bee/osql/sharding/moretable/entity/Ordersdetail.java new file mode 100644 index 0000000..5c4228f --- /dev/null +++ b/src/main/java/org/teasoft/exam/bee/osql/sharding/moretable/entity/Ordersdetail.java @@ -0,0 +1,80 @@ +package org.teasoft.exam.bee.osql.sharding.moretable.entity; + +import java.io.Serializable; + +/** + * @author Honey + * Create on 2022-09-05 15:31:10 + */ +public class Ordersdetail implements Serializable { + + private static final long serialVersionUID = 1592085161536L; + + private Long id; + private Long orderid; + private Long userid; + private Long item; + private String detail; + private String remark; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public Long getOrderid() { + return orderid; + } + + public void setOrderid(Long orderid) { + this.orderid = orderid; + } + + public Long getUserid() { + return userid; + } + + public void setUserid(Long userid) { + this.userid = userid; + } + + public Long getItem() { + return item; + } + + public void setItem(Long item) { + this.item = item; + } + + public String getDetail() { + return detail; + } + + public void setDetail(String detail) { + this.detail = detail; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public String toString(){ + StringBuilder str=new StringBuilder(); + str.append("Ordersdetail["); + str.append("id=").append(id); + str.append(",orderid=").append(orderid); + str.append(",userid=").append(userid); + str.append(",item=").append(item); + str.append(",detail=").append(detail); + str.append(",remark=").append(remark); + str.append("]"); + return str.toString(); + } +} \ No newline at end of file diff --git a/src/main/java/org/teasoft/exam/bee/osql/sharding/moretable/entity/Ordersdetail_F.java b/src/main/java/org/teasoft/exam/bee/osql/sharding/moretable/entity/Ordersdetail_F.java new file mode 100644 index 0000000..c63ab85 --- /dev/null +++ b/src/main/java/org/teasoft/exam/bee/osql/sharding/moretable/entity/Ordersdetail_F.java @@ -0,0 +1,19 @@ +package org.teasoft.exam.bee.osql.sharding.moretable.entity; + +/** + * Relative field name for Javabean Ordersdetail + * @author Honey + * Create on 2022-09-05 15:31:10 + */ +public class Ordersdetail_F { + + private Ordersdetail_F() {} + + public static final String id = "id"; + public static final String orderid = "orderid"; + public static final String userid = "userid"; + public static final String item = "item"; + public static final String detail = "detail"; + public static final String remark = "remark"; + public static final String ALL_NAMES = "id,orderid,userid,item,detail,remark"; +} \ No newline at end of file -- Gitee From 5115e29d95608759a20f754cf32794ccbc07efb6 Mon Sep 17 00:00:00 2001 From: AiTeaSoft Date: Tue, 4 Oct 2022 23:32:13 +0800 Subject: [PATCH 3/3] update for V2.0 (Bee Sharding) --- src/main/java/entity/field/Orders_F.java | 3 +-- .../java/org/teasoft/exam/bee/osql/ds/DiffDdExam.java | 8 +++++++- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/main/java/entity/field/Orders_F.java b/src/main/java/entity/field/Orders_F.java index 2c76f85..ff52d78 100644 --- a/src/main/java/entity/field/Orders_F.java +++ b/src/main/java/entity/field/Orders_F.java @@ -3,7 +3,7 @@ package entity.field; /** * Relative field name for Javabean Orders * @author Honey - * Create on 2022-08-12 17:07:08 + * Create on 2022-07-12 01:18:30 */ public class Orders_F { @@ -18,5 +18,4 @@ public class Orders_F { public static final String sequence = "sequence"; public static final String abc = "abc"; public static final String updatetime = "updatetime"; - public static final String ALL_NAMES = "id,userid,name,total,createtime,remark,sequence,abc,updatetime"; } \ No newline at end of file diff --git a/src/main/java/org/teasoft/exam/bee/osql/ds/DiffDdExam.java b/src/main/java/org/teasoft/exam/bee/osql/ds/DiffDdExam.java index a89e45a..c9ecc20 100644 --- a/src/main/java/org/teasoft/exam/bee/osql/ds/DiffDdExam.java +++ b/src/main/java/org/teasoft/exam/bee/osql/ds/DiffDdExam.java @@ -61,6 +61,9 @@ public class DiffDdExam { HoneyConfig.getHoneyConfig().multiDS_differentDbType=true; HoneyConfig.getHoneyConfig().multiDS_defalutDS = "ds1"; + HoneyConfig.getHoneyConfig().multiDS_sharding = false; + + // HoneyConfig.getHoneyConfig().multiDs_matchEntityClassPath = "ds2:org.teasoft.exam.bee.osql.entity.dynamic.Orders,com.xxx.cc.**;ds3:com.xxx.dd.User"; // HoneyConfig.getHoneyConfig().multiDs_matchEntityClassPath = "ds2:org.teasoft.exam.bee.osql.entity.dynamic.Orders,org.teasoft.exam.bee.osql.moretable.entity.**;ds3:com.xxx.dd.User"; @@ -68,10 +71,13 @@ public class DiffDdExam { HoneyConfig.getHoneyConfig().multiDS_matchTable = "ds2:test_user"; HoneyContext.setConfigRefresh(true); + System.out.println(">>>>>>>>>>>>>>>>>>>test2"); + test2(); //与test1不同的数据源 + System.out.println(">>>>>>>>>>>>>>>>>>>test1"); test1(); System.out.println(">>>>>>>>>>>>>>>>>>>test2"); - test2(); //oracle + test2(); //与test1不同的数据源 System.out.println(">>>>>>>>>>>>>>>>>>>test3"); // HoneyConfig.getHoneyConfig().multiDS_defalutDS = "ds2"; // reset // HoneyContext.setConfigRefresh(true); //要显示刷新才会更改配置. -- Gitee