2424
2525import apijson .*;
2626//import apijson.influxdb.InfluxDBUtil;
27+ import apijson .iotdb .IoTDBUtil ;
2728import apijson .orm .AbstractParser ;
2829import apijson .orm .AbstractSQLConfig ;
2930import apijson .orm .Parser ;
@@ -51,69 +52,7 @@ public DemoSQLConfig(RequestMethod method, String table) {
5152 super (method , table );
5253 }
5354
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-
9755 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-
11756 DEFAULT_DATABASE = DATABASE_MYSQL ; //TODO 默认数据库类型,改成你自己的。TiDB, MariaDB, OceanBase 这类兼容 MySQL 的可当做 MySQL 使用
11857 DEFAULT_SCHEMA = "sys" ; // ""apijson"; //TODO 默认数据库名/模式,改成你自己的,默认情况是 MySQL: sys, PostgreSQL: sys, SQL Server: dbo, Oracle:
11958
@@ -292,7 +231,7 @@ public String getDBUri() {
292231 return "http://localhost:19530" ;
293232 }
294233 if (isIoTDB ()) {
295- return "jdbc:iotdb://127.0.0.1 :6667?charset=GB18030" ;
234+ return "jdbc:iotdb://localhost :6667" ; // ?charset=GB18030 加参数会报错 URI 格式错误
296235 }
297236 if (isMongoDB ()) {
298237 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) {
468407 // public boolean isDb2() {
469408 // return false;
470409 // }
410+ //
411+ // 其它数据库 ...
471412
472413
473414 // 取消注释来兼容 Oracle DATETIME, TIMESTAMP 等日期时间类型的值来写库。5.0.0+ 重写以下方法,4.9.1 及以下改为重写 getValue(String)
@@ -514,15 +455,15 @@ protected int getMaxCombineCount() {
514455
515456
516457 // 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+ }
526467
527468 // TODO 迁移到 apijson-influxdb 主项目 >>>>>>>>>>>>>>>>>>>>>>
528469
@@ -535,8 +476,7 @@ public String getSQLTable() {
535476
536477 @ Override
537478 public String getTablePath () {
538- String p = super .getTablePath ();
539- return isIoTDB () ? p + ".**" : p ;
479+ return IoTDBUtil .getTablePath (super .getTablePath (), isIoTDB ());
540480 }
541481
542482 // 取消注释可将前端传参驼峰命名转为蛇形命名 aBCdEfg => upper ? A_B_CD_EFG : a_b_cd_efg
0 commit comments