24
24
25
25
import apijson .*;
26
26
//import apijson.influxdb.InfluxDBUtil;
27
+ import apijson .iotdb .IoTDBUtil ;
27
28
import apijson .orm .AbstractParser ;
28
29
import apijson .orm .AbstractSQLConfig ;
29
30
import apijson .orm .Parser ;
@@ -51,69 +52,7 @@ public DemoSQLConfig(RequestMethod method, String table) {
51
52
super (method , table );
52
53
}
53
54
54
- // 支持 NoSQL 数据库 MongoDB,APIJSON 6.4.0- 版本需要手动添加相关代码 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<
55
- public static final String DATABASE_MONGODB = "MONGODB" ;
56
- public static final String DATABASE_MILVUS = "MILVUS" ;
57
- public static final String DATABASE_IOTDB = "IOTDB" ;
58
-
59
- @ Override
60
- public boolean isPrepared () {
61
- return super .isPrepared () && ! isMongoDB (); // MongoDB JDBC 还不支持预编译
62
- }
63
-
64
- public boolean isMongoDB () {
65
- return DATABASE_MONGODB .equals (getDatabase ());
66
-
67
- }
68
- public boolean isMilvus () {
69
- return DATABASE_MILVUS .equals (getDatabase ());
70
- }
71
- public boolean isIoTDB () {
72
- return DATABASE_IOTDB .equals (getDatabase ());
73
- }
74
-
75
- // MongoDB 同时支持 `tbl` 反引号 和 "col" 双引号
76
- @ Override
77
- public String getQuote () {
78
- return isMilvus () ? "`" : (isIoTDB () ? "" : super .getQuote ());
79
- }
80
-
81
- @ Override
82
- public String getLimitString () {
83
- if (isMilvus ()) {
84
- int count = getCount ();
85
- if (count == 0 ) {
86
- Parser <Long > parser = getParser ();
87
- count = parser == null ? AbstractParser .MAX_QUERY_COUNT : parser .getMaxQueryCount ();
88
- }
89
-
90
- int offset = getOffset (getPage (), count );
91
- return " LIMIT " + offset + ", " + count ; // 目前 moql-transx 的限制
92
- }
93
-
94
- return super .getLimitString ();
95
- }
96
-
97
55
static {
98
- DATABASE_LIST .add (DATABASE_MONGODB );
99
- DATABASE_LIST .add (DATABASE_MILVUS );
100
- DATABASE_LIST .add (DATABASE_CASSANDRA );
101
- DATABASE_LIST .add (DATABASE_IOTDB );
102
-
103
- // Milvus 需要
104
- SQL_FUNCTION_MAP .put ("vMatch" , "" );
105
- SQL_FUNCTION_MAP .put ("consistencyLevel" , "" );
106
- SQL_FUNCTION_MAP .put ("partitionBy" , "" );
107
- SQL_FUNCTION_MAP .put ("gracefulTime" , "" );
108
- SQL_FUNCTION_MAP .put ("guaranteeTimestamp" , "" );
109
- SQL_FUNCTION_MAP .put ("roundDecimal" , "" );
110
- SQL_FUNCTION_MAP .put ("travelTimestamp" , "" );
111
- SQL_FUNCTION_MAP .put ("nProbe" , "" );
112
- SQL_FUNCTION_MAP .put ("ef" , "" );
113
- SQL_FUNCTION_MAP .put ("searchK" , "" );
114
-
115
- // 支持 NoSQL 数据库 MongoDB,APIJSON 6.4.0- 版本需要手动添加相关代码 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>
116
-
117
56
DEFAULT_DATABASE = DATABASE_MYSQL ; //TODO 默认数据库类型,改成你自己的。TiDB, MariaDB, OceanBase 这类兼容 MySQL 的可当做 MySQL 使用
118
57
DEFAULT_SCHEMA = "sys" ; // ""apijson"; //TODO 默认数据库名/模式,改成你自己的,默认情况是 MySQL: sys, PostgreSQL: sys, SQL Server: dbo, Oracle:
119
58
@@ -292,7 +231,7 @@ public String getDBUri() {
292
231
return "http://localhost:19530" ;
293
232
}
294
233
if (isIoTDB ()) {
295
- return "jdbc:iotdb://127.0.0.1 :6667?charset=GB18030" ;
234
+ return "jdbc:iotdb://localhost :6667" ; // ?charset=GB18030 加参数会报错 URI 格式错误
296
235
}
297
236
if (isMongoDB ()) {
298
237
return "jdbc:mongodb://atlas-sql-6593c65c296c5865121e6ebe-xxskv.a.query.mongodb.net/myVirtualDatabase?ssl=true&authSource=admin" ;
@@ -468,6 +407,8 @@ public void setSql(String sql) {
468
407
// public boolean isDb2() {
469
408
// return false;
470
409
// }
410
+ //
411
+ // 其它数据库 ...
471
412
472
413
473
414
// 取消注释来兼容 Oracle DATETIME, TIMESTAMP 等日期时间类型的值来写库。5.0.0+ 重写以下方法,4.9.1 及以下改为重写 getValue(String)
@@ -514,15 +455,15 @@ protected int getMaxCombineCount() {
514
455
515
456
516
457
// TODO 迁移到 apijson-influxdb 主项目 <<<<<<<<<<<<<<<<<<<<
517
- // @Override
518
- // public String getSchema() {
519
- // return InfluxDBUtil .getSchema(super.getSchema(), DEFAULT_SCHEMA, isInfluxDB ());
520
- // }
521
- //
522
- // @Override
523
- // public String getSQLSchema() {
524
- // return InfluxDBUtil .getSQLSchema(super.getSQLSchema(), isInfluxDB ());
525
- // }
458
+ @ Override
459
+ public String getSchema () {
460
+ return IoTDBUtil .getSchema (super .getSchema (), DEFAULT_SCHEMA , isIoTDB ());
461
+ }
462
+
463
+ @ Override
464
+ public String getSQLSchema () {
465
+ return IoTDBUtil .getSQLSchema (super .getSQLSchema (). replaceAll ( "-" , "." ), isIoTDB ());
466
+ }
526
467
527
468
// TODO 迁移到 apijson-influxdb 主项目 >>>>>>>>>>>>>>>>>>>>>>
528
469
@@ -535,8 +476,7 @@ public String getSQLTable() {
535
476
536
477
@ Override
537
478
public String getTablePath () {
538
- String p = super .getTablePath ();
539
- return isIoTDB () ? p + ".**" : p ;
479
+ return IoTDBUtil .getTablePath (super .getTablePath (), isIoTDB ());
540
480
}
541
481
542
482
// 取消注释可将前端传参驼峰命名转为蛇形命名 aBCdEfg => upper ? A_B_CD_EFG : a_b_cd_efg
0 commit comments