Skip to content

Commit 7005853

Browse files
committed
Java:MultiDataSource 升级 APIJSON, apijson-framework 及自身 7.1.0,apijson-column 及 apijson-router 2.1.0
1 parent 113eac2 commit 7005853

File tree

8 files changed

+42
-174
lines changed

8 files changed

+42
-174
lines changed

APIJSON-Java-Server/APIJSONBoot-MultiDataSource/pom.xml

+9-14
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
<groupId>apijson.boot</groupId>
77
<artifactId>apijson-boot-multi-datasource</artifactId>
8-
<version>7.0.3</version>
8+
<version>7.1.0</version>
99
<packaging>jar</packaging>
1010

1111
<name>APIJSONBoot-MultiDataSource</name>
@@ -56,25 +56,25 @@
5656

5757

5858
<!-- 可使用 libs 目录的 apijson-orm.jar, apijson-framework.jar, apijson-column.jar 来替代,两种方式二选一 <<<<<<<<<< -->
59-
<!-- <dependency>-->
60-
<!-- <groupId>com.github.Tencent</groupId>-->
61-
<!-- <artifactId>APIJSON</artifactId>-->
62-
<!-- <version>7.2.0</version>-->
63-
<!-- </dependency>-->
59+
<dependency>
60+
<groupId>com.github.Tencent</groupId>
61+
<artifactId>APIJSON</artifactId>
62+
<version>7.1.0</version>
63+
</dependency>
6464
<dependency>
6565
<groupId>com.github.APIJSON</groupId>
6666
<artifactId>apijson-framework</artifactId>
67-
<version>7.0.3</version>
67+
<version>7.1.0</version>
6868
</dependency>
6969
<dependency>
7070
<groupId>com.github.APIJSON</groupId>
7171
<artifactId>apijson-column</artifactId>
72-
<version>2.0.3</version>
72+
<version>2.1.0</version>
7373
</dependency>
7474
<dependency>
7575
<groupId>com.github.APIJSON</groupId>
7676
<artifactId>apijson-router</artifactId>
77-
<version>2.0.3</version>
77+
<version>2.1.0</version>
7878
</dependency>
7979
<!-- <dependency>-->
8080
<!-- <groupId>com.surrealdb</groupId>-->
@@ -194,11 +194,6 @@
194194
<artifactId>taos-jdbcdriver</artifactId>
195195
<version>2.0.38</version>
196196
</dependency>
197-
<!-- <dependency>-->
198-
<!-- <groupId>org.nebula-contrib</groupId>-->
199-
<!-- <artifactId>nebula-jdbc</artifactId>-->
200-
<!-- <version>3.0.0</version>-->
201-
<!-- </dependency>-->
202197
<dependency>
203198
<groupId>org.influxdb</groupId>
204199
<artifactId>influxdb-java</artifactId>

APIJSON-Java-Server/APIJSONBoot-MultiDataSource/src/main/java/apijson/boot/DemoApplication.java

-9
Original file line numberDiff line numberDiff line change
@@ -222,15 +222,6 @@ public void addCorsMappings(CorsRegistry registry) {
222222
// e.printStackTrace();
223223
// Log.e(TAG, "加载 TDengine 驱动失败,请检查 pom.xml 中 com.taosdata.jdbc 版本是否存在以及可用 !!!");
224224
// }
225-
//
226-
// try { //加载驱动程序
227-
// Log.d(TAG, "尝试加载 NebulaGraph 驱动 <<<<<<<<<<<<<<<<<<<<< ");
228-
// Class.forName("com.vesoft.nebula.jdbc.impl.NebulaDriver");
229-
// Log.d(TAG, "成功加载 NebulaGraph 驱动!>>>>>>>>>>>>>>>>>>>>> ");
230-
// } catch (ClassNotFoundException e) {
231-
// e.printStackTrace();
232-
// Log.e(TAG, "加载 NebulaGraph 驱动失败,请检查 pom.xml 中 org.nebula-contrib 版本是否存在以及可用 !!!");
233-
// }
234225

235226
// APIJSON 配置 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
236227

APIJSON-Java-Server/APIJSONBoot-MultiDataSource/src/main/java/apijson/boot/DemoController.java

+5-125
Original file line numberDiff line numberDiff line change
@@ -155,10 +155,10 @@ public String getRequestURL() {
155155
return getRequestBaseURL() + getRequestPath();
156156
}
157157

158-
// @Override
159-
// public Parser<Long> newParser(HttpSession session, RequestMethod method) {
160-
// return super.newParser(session, method).setNeedVerify(false);
161-
// }
158+
// @Override
159+
// public Parser<Long> newParser(HttpSession session, RequestMethod method) {
160+
// return super.newParser(session, method).setNeedVerify(false);
161+
// }
162162

163163
/**增删改查统一的类 RESTful API 入口,牺牲一点路由解析性能来提升一些开发效率
164164
* @param method
@@ -2189,127 +2189,7 @@ public String execute(@RequestBody String request, HttpSession session) {
21892189

21902190
result.put("time:start|duration|end|parse|sql", startTime + "|" + duration + "|" + endTime + "|" + parseDuration + "|" + sqlDuration);
21912191

2192-
if (DemoSQLExecutor.DATABASE_NEBULA.equalsIgnoreCase(database) == false) {
2193-
return result.toJSONString();
2194-
}
2195-
2196-
return com.alibaba.fastjson.JSON.toJSONString(result, new ValueFilter() {
2197-
@Override
2198-
public Object process(Object o, String key, Object val) {
2199-
// if (val instanceof ValueWrapper) {
2200-
// return process(o, key, ((ValueWrapper) val).getValue());
2201-
// }
2202-
//
2203-
// if (val instanceof Value) {
2204-
// return process(o, key, ((Value) val).getFieldValue());
2205-
// }
2206-
//
2207-
// if (val instanceof Vertex) {
2208-
// JSONObject obj = new JSONObject(true);
2209-
// obj.put("vid", new String(((Vertex) val).getVid().getSVal()));
2210-
// obj.put("str", val.toString());
2211-
//
2212-
// List<Tag> tags = ((Vertex) val).getTags();
2213-
//
2214-
// if (tags != null) {
2215-
// JSONArray arr = new JSONArray();
2216-
// for (int i = 0; i < tags.size(); i++) {
2217-
// arr.add(process(o, String.valueOf(i), tags.get(i)));
2218-
// }
2219-
// obj.put("tags", arr);
2220-
// }
2221-
//
2222-
// return obj;
2223-
// }
2224-
//
2225-
// if (val instanceof Tag) {
2226-
// JSONObject obj = new JSONObject(true);
2227-
// obj.put("name", new String(((Tag) val).getName()));
2228-
// obj.put("str", val.toString());
2229-
//
2230-
// Map<byte[], Value> props = ((Tag) val).getProps();
2231-
//
2232-
// if (props != null) {
2233-
// JSONObject propsObj = new JSONObject(true);
2234-
// props.forEach(new BiConsumer<byte[], Value>() {
2235-
// @Override
2236-
// public void accept(byte[] bytes, Value value) {
2237-
// String k = new String(bytes);
2238-
// propsObj.put(k, process(propsObj, k, value));
2239-
// }
2240-
// });
2241-
// obj.put("props", propsObj);
2242-
// }
2243-
//
2244-
// return obj;
2245-
// }
2246-
//
2247-
// if (val instanceof Edge) {
2248-
// JSONObject obj = new JSONObject(true);
2249-
// obj.put("name", new String(((Edge) val).getName()));
2250-
// obj.put("str", val.toString());
2251-
//
2252-
// Map<byte[], Value> props = ((Edge) val).getProps();
2253-
//
2254-
// if (props != null) {
2255-
// JSONObject propsObj = new JSONObject(true);
2256-
// props.forEach(new BiConsumer<byte[], Value>() {
2257-
// @Override
2258-
// public void accept(byte[] bytes, Value value) {
2259-
// String k = new String(bytes);
2260-
// propsObj.put(k, process(propsObj, k, value));
2261-
// }
2262-
// });
2263-
// obj.put("props", propsObj);
2264-
// }
2265-
//
2266-
// return obj;
2267-
// }
2268-
//
2269-
// if (val instanceof NullType) {
2270-
// return null;
2271-
// }
2272-
//
2273-
// if (val instanceof DateWrapper) {
2274-
// return ((DateWrapper) val).toString();
2275-
// }
2276-
//
2277-
// if (val instanceof TimeWrapper) {
2278-
// return ((TimeWrapper) val).getLocalTimeStr();
2279-
// }
2280-
//
2281-
// if (val instanceof DateTimeWrapper) {
2282-
// return ((DateTimeWrapper) val).getLocalDateTimeStr();
2283-
// }
2284-
//
2285-
// if (val instanceof DurationWrapper) {
2286-
// return ((DurationWrapper) val).getMicroseconds();
2287-
// }
2288-
//
2289-
// if (val instanceof Date) {
2290-
// Date d = (Date) val;
2291-
// return new java.sql.Date(d.getYear() - 1900, d.getMonth(), d.getDay()).toString();
2292-
// }
2293-
//
2294-
// if (val instanceof Time) {
2295-
// Time t = (Time) val;
2296-
// return new java.sql.Time(t.getHour(), t.getMinute(), t.getSec()).toString();
2297-
// }
2298-
//
2299-
// if (val instanceof DateTime) {
2300-
// DateTime dt = (DateTime) val;
2301-
// // return new java.util.Date(dt.getYear(), dt.getNonth(), dt.getDayO, dt.getHour(), dt.getMinute(), dt.getSec0).toGnTString();
2302-
// return new java.sql.Date(dt.getYear() - 1988, dt.getMonth(), dt.getDay())
2303-
// + " " + new java.sql.Time(dt.getHour(), dt.getMinute(), dt.getSec());
2304-
// }
2305-
//
2306-
// if (val instanceof Duration) {
2307-
// return ((Duration) val).getMicroseconds();
2308-
// }
2309-
2310-
return val;
2311-
}
2312-
}, SerializerFeature.WriteMapNullValue);
2192+
return result.toJSONString();
23132193
} catch (Exception e) {
23142194
JSONObject result = DemoParser.newErrorResult(e);
23152195
result.put("throw", e.getClass().getName());

APIJSON-Java-Server/APIJSONBoot-MultiDataSource/src/main/java/apijson/demo/DemoSQLConfig.java

+1
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,7 @@ public String getUserIdKey(String database, String schema, String datasource, St
106106
RAW_MAP.put("`to`.`id`", ""); // 空字符串 "" 表示用 key 的值 `to`.`id`
107107
RAW_MAP.put("toDate", ""); // "@column": "date;date_format('2020-01-01','%Y-%m-%d'):toDate", "@having": "(date > toDate)", "@raw": "@column,@having"
108108
RAW_MAP.put("to.momentId", "`to`.`momentId`"); // 最终以 `to`.`userId` 拼接 SQL,相比以上写法可以让前端写起来更简单
109+
RAW_MAP.put("Comment:to.momentId", "`Comment__to`.`momentId`"); // 最终以 `Comment__to`.`userId` 拼接 SQL,相比以上写法可以让前端写起来更简单
109110
RAW_MAP.put("(`Comment`.`userId`=`to`.`userId`)", ""); // 已经是一个条件表达式了,用 () 包裹是为了避免 JSON 中的 key 拼接在前面导致 SQL 出错
110111
RAW_MAP.put("sum(if(userId%2=0,1,0))", ""); // 超过单个函数的 SQL 表达式
111112
RAW_MAP.put("sumUserIdIsEven", "sum(if(`userId`%2=0,1,0)) AS sumUserIdIsEven"); // 简化前端传参

APIJSON-Java-Server/APIJSONBoot-MultiDataSource/src/main/java/apijson/demo/DemoSQLExecutor.java

-20
Original file line numberDiff line numberDiff line change
@@ -122,30 +122,10 @@ public synchronized void removeCache(String sql, SQLConfig<Long> config) {
122122

123123
// Redis 缓存 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
124124

125-
public static final String DATABASE_NEBULA = "NEBULA";
126125

127126
// 适配连接池,如果这里能拿到连接池的有效 Connection,则 SQLConfig<Long> 不需要配置 dbVersion, dbUri, dbAccount, dbPassword
128127
@Override
129128
public Connection getConnection(SQLConfig<Long> config) throws Exception {
130-
// if (DATABASE_NEBULA.equals(config.getDatabase())) { // 3.0.0 及以下要这样连接
131-
// String uri = config.getDBUri();
132-
//
133-
// int start = uri.indexOf("://");
134-
// String prefix = uri.substring(0, start);
135-
//
136-
// uri = uri.substring(start + "://".length());
137-
// int end = uri.indexOf("/");
138-
// String space = uri.substring(end + 1);
139-
//
140-
// Properties props = new Properties();
141-
// props.put("url", prefix + "://" + space);
142-
// props.put("graphSpace", space);
143-
//
144-
// NebulaDriver driver = new NebulaDriver(uri.substring(0, end));
145-
// return driver.connect(prefix + "://" + space, props);
146-
// // return DriverManager.getConnection("jdbc:nebula://JDBC_TEST_SPACE", "root", "nebula");
147-
// }
148-
149129
String datasource = config.getDatasource();
150130
Log.d(TAG, "getConnection config.getDatasource() = " + datasource);
151131

APIJSON-Java-Server/APIJSONBoot-MultiDataSource/src/main/resources/static/api/apijson/CodeUtil.js

+9-2
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ var CodeUtil = {
5454
DATABASE_KINGBASE: 'KINGBASE',
5555
DATABASE_TIDB: 'TIDB',
5656
DATABASE_TDENGINE: 'TDENGINE',
57-
DATABASE_NEBULA: 'NEBULA',
57+
DATABASE_SURREALDB: 'SURREALDB',
5858
DATABASE_PRESTO: 'PRESTO',
5959
DATABASE_TRINO: 'TRINO',
6060
DATABASE_INFLUXDB: 'INFLUXDB',
@@ -64,6 +64,13 @@ var CodeUtil = {
6464
DATABASE_KAFKA: 'KAFKA',
6565
DATABASE_MARIADB: 'MARIADB',
6666
DATABASE_HIVE: 'HIVE',
67+
DATABASE_SNOWFLAKE: 'SNOWFLAKE',
68+
DATABASE_DATABRICKS: 'DATABRICKS',
69+
DATABASE_MILVUS: 'MILVUS',
70+
DATABASE_IOTDB: 'IOTDB',
71+
DATABASE_DUCKDB: 'DUCKDB',
72+
DATABASE_CASSANDRA: 'CASSANDRA',
73+
DATABASE_MONGODB: 'MONGODB',
6774

6875
type: 'JSON',
6976
database: 'MYSQL',
@@ -6222,7 +6229,7 @@ res_data = rep.json()
62226229
OWNER: '拥有者',
62236230
ADMIN: '管理员'
62246231
},
6225-
DATABASE_KEYS: ['MYSQL', 'POSTGRESQL', 'SQLSERVER', 'ORACLE', 'DB2', 'DAMENG', 'KINGBASE', 'MARIADB', 'SQLITE', 'INFLUXDB', 'TDENGINE', 'PRESTO', 'TRINO', 'HIVE', 'TIDB', 'CLICKHOUSE', 'ELASTICSEARCH', 'REDIS'], // , 'KAFKA'],
6232+
DATABASE_KEYS: ['MYSQL', 'POSTGRESQL', 'SQLSERVER', 'ORACLE', 'DB2', 'DAMENG', 'KINGBASE', 'MARIADB', 'SQLITE', 'INFLUXDB', 'TDENGINE', 'PRESTO', 'TRINO', 'HIVE', 'TIDB', 'CLICKHOUSE', 'ELASTICSEARCH', 'REDIS', 'IOTDB', 'SURREALDB', 'DUCKDB', 'CASSANDRA', 'MONGODB', 'SNOWFLAKE', 'DATABRICKS', 'MILVUS'], // , 'KAFKA'],
62266233

62276234
getComment4Function: function (funCallStr, method, language) {
62286235
if (typeof funCallStr != 'string') {

APIJSON-Java-Server/APIJSONBoot-MultiDataSource/src/main/resources/static/sql/apijson/CodeUtil.js

+9-2
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ var CodeUtil = {
5454
DATABASE_KINGBASE: 'KINGBASE',
5555
DATABASE_TIDB: 'TIDB',
5656
DATABASE_TDENGINE: 'TDENGINE',
57-
DATABASE_NEBULA: 'NEBULA',
57+
DATABASE_SURREALDB: 'SURREALDB',
5858
DATABASE_PRESTO: 'PRESTO',
5959
DATABASE_TRINO: 'TRINO',
6060
DATABASE_INFLUXDB: 'INFLUXDB',
@@ -64,6 +64,13 @@ var CodeUtil = {
6464
DATABASE_KAFKA: 'KAFKA',
6565
DATABASE_MARIADB: 'MARIADB',
6666
DATABASE_HIVE: 'HIVE',
67+
DATABASE_SNOWFLAKE: 'SNOWFLAKE',
68+
DATABASE_DATABRICKS: 'DATABRICKS',
69+
DATABASE_MILVUS: 'MILVUS',
70+
DATABASE_IOTDB: 'IOTDB',
71+
DATABASE_DUCKDB: 'DUCKDB',
72+
DATABASE_CASSANDRA: 'CASSANDRA',
73+
DATABASE_MONGODB: 'MONGODB',
6774

6875
type: 'JSON',
6976
database: 'MYSQL',
@@ -5904,7 +5911,7 @@ var CodeUtil = {
59045911
OWNER: '拥有者',
59055912
ADMIN: '管理员'
59065913
},
5907-
DATABASE_KEYS: ['MYSQL', 'POSTGRESQL', 'SQLSERVER', 'ORACLE', 'DB2', 'DAMENG', 'KINGBASE', 'MARIADB', 'SQLITE', 'INFLUXDB', 'TDENGINE', 'PRESTO', 'TRINO', 'HIVE', 'TIDB', 'CLICKHOUSE', 'ELASTICSEARCH', 'REDIS'], // , 'KAFKA'],
5914+
DATABASE_KEYS: ['MYSQL', 'POSTGRESQL', 'SQLSERVER', 'ORACLE', 'DB2', 'DAMENG', 'KINGBASE', 'MARIADB', 'SQLITE', 'INFLUXDB', 'TDENGINE', 'PRESTO', 'TRINO', 'HIVE', 'TIDB', 'CLICKHOUSE', 'ELASTICSEARCH', 'REDIS', 'IOTDB', 'SURREALDB', 'DUCKDB', 'CASSANDRA', 'MONGODB', 'SNOWFLAKE', 'DATABRICKS', 'MILVUS'], // , 'KAFKA'],
59085915

59095916
getComment4Function: function (funCallStr, method, language) {
59105917
if (typeof funCallStr != 'string') {

APIJSON-Java-Server/APIJSONBoot-MultiDataSource/src/main/resources/static/unit/apijson/CodeUtil.js

+9-2
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ var CodeUtil = {
5858
DATABASE_KINGBASE: 'KINGBASE',
5959
DATABASE_TIDB: 'TIDB',
6060
DATABASE_TDENGINE: 'TDENGINE',
61-
DATABASE_NEBULA: 'NEBULA',
61+
DATABASE_SURREALDB: 'SURREALDB',
6262
DATABASE_PRESTO: 'PRESTO',
6363
DATABASE_TRINO: 'TRINO',
6464
DATABASE_INFLUXDB: 'INFLUXDB',
@@ -68,6 +68,13 @@ var CodeUtil = {
6868
DATABASE_KAFKA: 'KAFKA',
6969
DATABASE_MARIADB: 'MARIADB',
7070
DATABASE_HIVE: 'HIVE',
71+
DATABASE_SNOWFLAKE: 'SNOWFLAKE',
72+
DATABASE_DATABRICKS: 'DATABRICKS',
73+
DATABASE_MILVUS: 'MILVUS',
74+
DATABASE_IOTDB: 'IOTDB',
75+
DATABASE_DUCKDB: 'DUCKDB',
76+
DATABASE_CASSANDRA: 'CASSANDRA',
77+
DATABASE_MONGODB: 'MONGODB',
7178

7279
type: 'JSON',
7380
database: 'MYSQL',
@@ -6219,7 +6226,7 @@ res_data = rep.json()
62196226
OWNER: '拥有者',
62206227
ADMIN: '管理员'
62216228
},
6222-
DATABASE_KEYS: ['MYSQL', 'POSTGRESQL', 'SQLSERVER', 'ORACLE', 'DB2', 'DAMENG', 'KINGBASE', 'MARIADB', 'SQLITE', 'INFLUXDB', 'TDENGINE', 'PRESTO', 'TRINO', 'HIVE', 'TIDB', 'CLICKHOUSE', 'ELASTICSEARCH', 'REDIS'], // , 'KAFKA'],
6229+
DATABASE_KEYS: ['MYSQL', 'POSTGRESQL', 'SQLSERVER', 'ORACLE', 'DB2', 'DAMENG', 'KINGBASE', 'MARIADB', 'SQLITE', 'INFLUXDB', 'TDENGINE', 'PRESTO', 'TRINO', 'HIVE', 'TIDB', 'CLICKHOUSE', 'ELASTICSEARCH', 'REDIS', 'IOTDB', 'SURREALDB', 'DUCKDB', 'CASSANDRA', 'MONGODB', 'SNOWFLAKE', 'DATABRICKS', 'MILVUS'], // , 'KAFKA'],
62236230

62246231
getComment4Function: function (funCallStr, method, language) {
62256232
if (typeof funCallStr != 'string') {

0 commit comments

Comments
 (0)