Skip to content

Commit d4fd7d9

Browse files
committed
Java:MultiDataSource 新增 DuckDB 版
1 parent ef1aea9 commit d4fd7d9

File tree

4 files changed

+38
-11
lines changed

4 files changed

+38
-11
lines changed

Diff for: APIJSON-Java-Server/APIJSONBoot-MultiDataSource/pom.xml

+5-5
Original file line numberDiff line numberDiff line change
@@ -56,11 +56,11 @@
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.0.3</version>
63-
</dependency>
59+
<!-- <dependency>-->
60+
<!-- <groupId>com.github.Tencent</groupId>-->
61+
<!-- <artifactId>APIJSON</artifactId>-->
62+
<!-- <version>7.2.0</version>-->
63+
<!-- </dependency>-->
6464
<dependency>
6565
<groupId>com.github.APIJSON</groupId>
6666
<artifactId>apijson-framework</artifactId>

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

+10
Original file line numberDiff line numberDiff line change
@@ -204,6 +204,16 @@ public void addCorsMappings(CorsRegistry registry) {
204204
Log.e(TAG, "加载 IoTDB 驱动失败,请检查 pom.xml 中 org.apache.iotdb.jdbc 版本是否存在以及可用 !!!");
205205
}
206206

207+
try { //加载驱动程序
208+
Log.d(TAG, "尝试加载 DuckDB 驱动 <<<<<<<<<<<<<<<<<<<<< ");
209+
Class.forName("org.duckdb.DuckDBDriver");
210+
Log.d(TAG, "成功加载 DuckDB 驱动!>>>>>>>>>>>>>>>>>>>>> ");
211+
}
212+
catch (ClassNotFoundException e) {
213+
e.printStackTrace();
214+
Log.e(TAG, "加载 DuckDB 驱动失败,请检查 pom.xml 中 org.duckdb 版本是否存在以及可用 !!!");
215+
}
216+
207217
// try { //加载驱动程序
208218
// Log.d(TAG, "尝试加载 TDengine 驱动 <<<<<<<<<<<<<<<<<<<<< ");
209219
// Class.forName("com.taosdata.jdbc.TSDBDriver");

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

+17-5
Original file line numberDiff line numberDiff line change
@@ -180,6 +180,9 @@ public String getDBVersion() {
180180
if (isCassandra()) {
181181
return "4.0.1"; //TODO 改成你自己的
182182
}
183+
if (isDuckDB()) {
184+
return "1.1.3"; //TODO 改成你自己的
185+
}
183186

184187
return null;
185188
}
@@ -225,19 +228,22 @@ public String getDBUri() {
225228
return "jdbc:TAOS-RS://localhost:6041"; //TODO 改成你自己的
226229
}
227230
if (isInfluxDB()) {
228-
return "http://203.189.6.3:8086";
231+
return "http://203.189.6.3:8086"; //TODO 改成你自己的
229232
}
230233
if (isMilvus()) {
231-
return "http://localhost:19530";
234+
return "http://localhost:19530"; //TODO 改成你自己的
232235
}
233236
if (isIoTDB()) {
234-
return "jdbc:iotdb://localhost:6667"; // ?charset=GB18030 加参数会报错 URI 格式错误
237+
return "jdbc:iotdb://localhost:6667"; // ?charset=GB18030 加参数会报错 URI 格式错误 //TODO 改成你自己的
235238
}
236239
if (isMongoDB()) {
237-
return "jdbc:mongodb://atlas-sql-6593c65c296c5865121e6ebe-xxskv.a.query.mongodb.net/myVirtualDatabase?ssl=true&authSource=admin";
240+
return "jdbc:mongodb://atlas-sql-6593c65c296c5865121e6ebe-xxskv.a.query.mongodb.net/myVirtualDatabase?ssl=true&authSource=admin"; //TODO 改成你自己的
238241
}
239242
if (isCassandra()) {
240-
return "http://localhost:7001";
243+
return "http://localhost:7001"; //TODO 改成你自己的
244+
}
245+
if (isDuckDB()) {
246+
return "jdbc:duckdb:/Users/tommylemon/my_database.duckdb"; //TODO 改成你自己的
241247
}
242248

243249
return null;
@@ -294,6 +300,9 @@ public String getDBAccount() {
294300
if (isCassandra()) {
295301
return "root"; //TODO 改成你自己的
296302
}
303+
if (isDuckDB()) {
304+
return "root"; //TODO 改成你自己的
305+
}
297306

298307
return null;
299308
}
@@ -349,6 +358,9 @@ public String getDBPassword() {
349358
if (isCassandra()) {
350359
return "apijson"; //TODO 改成你自己的
351360
}
361+
if (isDuckDB()) {
362+
return ""; //TODO 改成你自己的
363+
}
352364

353365
return null;
354366
}

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

+6-1
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import apijson.orm.SQLConfig;
2626
import com.alibaba.druid.pool.DruidDataSource;
2727
import com.alibaba.fastjson.JSONObject;
28+
//import org.duckdb.JsonNode;
2829
import org.springframework.data.redis.connection.RedisStandaloneConfiguration;
2930
import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;
3031
import org.springframework.data.redis.core.RedisTemplate;
@@ -303,6 +304,10 @@ public void close() {
303304
// @Override
304305
// protected Object getValue(SQLConfig<Long> config, ResultSet rs, ResultSetMetaData rsmd, int tablePosition, JSONObject table, int columnIndex, String lable, Map<String, JSONObject> childMap) throws Exception {
305306
// Object v = super.getValue(config, rs, rsmd, tablePosition, table, columnIndex, lable, childMap);
306-
// return MongoUtil.getValue(v);
307+
//// if (v instanceof JsonNode) { // DuckDB json 类型需要转换
308+
//// JsonNode jn = (JsonNode) v;
309+
//// v = jn.isNull() ? null : JSON.parse(jn.toString());
310+
//// }
311+
// return v; // MongoUtil.getValue(v);
307312
// }
308313
}

0 commit comments

Comments
 (0)