From f6f27e49282f090dfa0ddfe98fcde62a7b9a85f8 Mon Sep 17 00:00:00 2001
From: TommyLemon <1184482681@qq.com>
Date: Sun, 18 May 2025 23:02:17 +0800
Subject: [PATCH 01/41] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E6=96=87=E7=AB=A0?=
=?UTF-8?q?=EF=BC=9AAPIJSON=E5=BF=AB=E9=80=9F=E5=85=A5=E9=97=A8-=E9=9B=B6?=
=?UTF-8?q?=E5=90=8E=E7=AB=AF=E4=BB=A3=E7=A0=81=EF=BC=8C=E6=8E=A5=E5=8F=A3?=
=?UTF-8?q?=E6=89=80=E8=A7=81=E5=8D=B3=E6=89=80=E5=BE=97?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
创作不易,点赞、收藏支持下热心的文章作者吧 ~
https://www.toutiao.com/article/7503844050689376783
---
README.md | 2 ++
1 file changed, 2 insertions(+)
diff --git a/README.md b/README.md
index 82ec117f..edc82100 100644
--- a/README.md
+++ b/README.md
@@ -631,6 +631,8 @@ Issue/问卷 一般解答顺序:贡献者 > 帮助他人的用户 > 提供任
[apijson 快速上手](https://blog.csdn.net/qq_16381291/article/details/147110737)
+[APIJSON快速入门-零后端代码,接口所见即所得](https://www.toutiao.com/article/7503844050689376783)
+
### 生态项目
[APIJSON-Demo](https://github.com/APIJSON/APIJSON-Demo) APIJSON 各种语言、各种框架 的 使用示例项目、上手文档、测试数据 SQL 文件 等
From efb4f6a362fd2fb00ff363e0dd1344451b2da87f Mon Sep 17 00:00:00 2001
From: TommyLemon <1184482681@qq.com>
Date: Tue, 27 May 2025 23:32:35 +0800
Subject: [PATCH 02/41] =?UTF-8?q?=E6=96=B0=E5=A2=9E=208.0=20=E7=89=88?=
=?UTF-8?q?=E5=AE=9E=E8=B7=B5=E5=8D=9A=E6=96=87=EF=BC=9A=E8=85=BE=E8=AE=AF?=
=?UTF-8?q?=E5=BC=80=E6=BA=90=EF=BC=81=E9=9B=B6=E4=BB=A3=E7=A0=81=EF=BC=8C?=
=?UTF-8?q?=E5=85=A8=E8=87=AA=E5=8A=A8=E4=B8=87=E8=83=BDAPI=E6=8E=A5?=
=?UTF-8?q?=E5=8F=A3?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
创作不易,点赞、收藏、转发支持热心的文章作者吧~
https://mp.weixin.qq.com/s/WWndAa68BqBfflWgL5592A
---
README.md | 2 ++
1 file changed, 2 insertions(+)
diff --git a/README.md b/README.md
index edc82100..858c4f5c 100644
--- a/README.md
+++ b/README.md
@@ -633,6 +633,8 @@ Issue/问卷 一般解答顺序:贡献者 > 帮助他人的用户 > 提供任
[APIJSON快速入门-零后端代码,接口所见即所得](https://www.toutiao.com/article/7503844050689376783)
+[腾讯开源!零代码,全自动万能API接口](https://mp.weixin.qq.com/s/WWndAa68BqBfflWgL5592A)
+
### 生态项目
[APIJSON-Demo](https://github.com/APIJSON/APIJSON-Demo) APIJSON 各种语言、各种框架 的 使用示例项目、上手文档、测试数据 SQL 文件 等
From 38dfb9335df47216fe84d52eee255c919d2e2e6a Mon Sep 17 00:00:00 2001
From: TommyLemon <1184482681@qq.com>
Date: Sun, 8 Jun 2025 19:49:40 +0800
Subject: [PATCH 03/41] =?UTF-8?q?=E7=94=9F=E6=80=81=E9=A1=B9=E7=9B=AE?=
=?UTF-8?q?=E6=96=B0=E5=A2=9E=20apijson-gson=20=E5=92=8C=20apijson-fastjso?=
=?UTF-8?q?n2=20=E8=BF=99=E4=B8=A4=E4=B8=AA=20JSON=20=E5=BA=8F=E5=88=97?=
=?UTF-8?q?=E5=8C=96=E5=92=8C=E5=8F=8D=E5=BA=8F=E5=88=97=E5=8C=96=E6=8F=92?=
=?UTF-8?q?=E4=BB=B6?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
创作不易,右上角点 ⭐Star 来支持/收藏下吧,谢谢 ^_^
https://github.com/APIJSON/apijson-gson
https://github.com/APIJSON/apijson-fastjson2
---
README.md | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/README.md b/README.md
index 858c4f5c..098c17fc 100644
--- a/README.md
+++ b/README.md
@@ -646,6 +646,10 @@ Issue/问卷 一般解答顺序:贡献者 > 帮助他人的用户 > 提供任
[apijson-column](https://github.com/APIJSON/apijson-column) APIJSON 的字段插件,支持 字段名映射 和 !key 反选字段
+[apijson-gson](https://github.com/APIJSON/apijson-gson) APIJSON 的 gson 插件,简化使用
+
+[apijson-fastjson2](https://github.com/APIJSON/apijson-fastjson2) APIJSON 的 fastjson2 插件,简化使用
+
[apijson-milvus](https://github.com/APIJSON/apijson-milvus) APIJSON 的 Milvus AI 向量数据库插件
[apijson-influxdb](https://github.com/APIJSON/apijson-influxdb) APIJSON 的 InfluxDB 物联网时序数据库插件
From a25bbc57d633792c83ac8d99748515fc04d52614 Mon Sep 17 00:00:00 2001
From: TommyLemon
Date: Sun, 15 Jun 2025 00:19:24 +0800
Subject: [PATCH 04/41] =?UTF-8?q?=E6=96=B0=E5=A2=9E=20IS=5FRETURN=5FSTACK?=
=?UTF-8?q?=5FTRACE=20=E9=85=8D=E7=BD=AE=E6=98=AF=E5=90=A6=E8=BF=94?=
=?UTF-8?q?=E5=9B=9E=20trace:stack=20=E5=AD=97=E6=AE=B5=EF=BC=8C=E4=BC=98?=
=?UTF-8?q?=E5=8C=96=E4=BB=A3=E7=A0=81?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../src/main/java/apijson/orm/AbstractParser.java | 11 ++++++++++-
.../main/java/apijson/orm/AbstractSQLExecutor.java | 11 ++++++-----
2 files changed, 16 insertions(+), 6 deletions(-)
diff --git a/APIJSONORM/src/main/java/apijson/orm/AbstractParser.java b/APIJSONORM/src/main/java/apijson/orm/AbstractParser.java
index 36f2b417..ba6ad3ce 100755
--- a/APIJSONORM/src/main/java/apijson/orm/AbstractParser.java
+++ b/APIJSONORM/src/main/java/apijson/orm/AbstractParser.java
@@ -62,6 +62,12 @@ public abstract class AbstractParser, L extends
*/
public static boolean IS_PRINT_REQUEST_ENDTIME_LOG = false;
+ /**
+ * 可以通过切换该变量来控制返回 trace:stack 字段,如果是 gson 则不设置为 false,避免序列化报错。
+ * 与 {@link Log#DEBUG} 任何一个为 true 返回 trace:stack 字段。
+ */
+ public static boolean IS_RETURN_STACK_TRACE = true;
+
/**
* 分页页码是否从 1 开始,默认为从 0 开始
@@ -622,7 +628,10 @@ public M parseResponse(M request) {
// }
Throwable t = error instanceof CommonException && error.getCause() != null ? error.getCause() : error;
res.put("trace:throw", t.getClass().getName());
- res.put("trace:stack", t.getStackTrace());
+
+ if (IS_RETURN_STACK_TRACE) {
+ res.put("trace:stack", t.getStackTrace());
+ }
}
}
diff --git a/APIJSONORM/src/main/java/apijson/orm/AbstractSQLExecutor.java b/APIJSONORM/src/main/java/apijson/orm/AbstractSQLExecutor.java
index c9d180bd..5ec59f36 100755
--- a/APIJSONORM/src/main/java/apijson/orm/AbstractSQLExecutor.java
+++ b/APIJSONORM/src/main/java/apijson/orm/AbstractSQLExecutor.java
@@ -1213,14 +1213,15 @@ public PreparedStatement getStatement(@NotNull SQLConfig config, String
sql = config.gainSQL(config.isPrepared());
}
+ Connection conn = getConnection(config);
PreparedStatement statement; //创建Statement对象
if (config.getMethod() == RequestMethod.POST && config.getId() == null) { //自增id
if (config.isOracle()) {
// 解决 oracle 使用自增主键 插入获取不到id问题
String[] generatedColumns = {config.getIdKey()};
- statement = getConnection(config).prepareStatement(sql, generatedColumns);
+ statement = conn.prepareStatement(sql, generatedColumns);
} else {
- statement = getConnection(config).prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);
+ statement = conn.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);
}
}
else if (RequestMethod.isGetMethod(config.getMethod(), true)) {
@@ -1234,13 +1235,13 @@ else if (RequestMethod.isGetMethod(config.getMethod(), true)) {
if (config.isMySQL() || config.isTiDB() || config.isMariaDB() || config.isOracle() || config.isSQLServer() || config.isDb2()
|| config.isPostgreSQL() || config.isCockroachDB() || config.isOpenGauss() || config.isTimescaleDB() || config.isQuestDB()
) {
- statement = getConnection(config).prepareStatement(sql, ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
+ statement = conn.prepareStatement(sql, ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
} else {
- statement = getConnection(config).prepareStatement(sql);
+ statement = conn.prepareStatement(sql);
}
}
else {
- statement = getConnection(config).prepareStatement(sql);
+ statement = conn.prepareStatement(sql);
}
List
From 0d235f3ba41de331d8f33889c7a29a0c62753378 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=97=A0=E7=A5=9EV?=
<72117341+wu-sv@users.noreply.github.com>
Date: Tue, 16 Sep 2025 09:24:12 +0800
Subject: [PATCH 31/41] =?UTF-8?q?=E4=BF=AE=E5=A4=8DgetConnectionKey?=
=?UTF-8?q?=E6=96=B9=E6=B3=95=E8=B0=83=E7=94=A8=E5=8F=82=E6=95=B0=E5=90=8D?=
=?UTF-8?q?=E7=A7=B0=E9=94=99=E8=AF=AF=E7=9A=84=E9=97=AE=E9=A2=98?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
https://gitee.com/Tencent/APIJSON/pulls/10
---
APIJSONORM/src/main/java/apijson/orm/AbstractSQLExecutor.java | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/APIJSONORM/src/main/java/apijson/orm/AbstractSQLExecutor.java b/APIJSONORM/src/main/java/apijson/orm/AbstractSQLExecutor.java
index 4d6d28c0..797ac3de 100755
--- a/APIJSONORM/src/main/java/apijson/orm/AbstractSQLExecutor.java
+++ b/APIJSONORM/src/main/java/apijson/orm/AbstractSQLExecutor.java
@@ -1315,7 +1315,7 @@ public Connection getConnection(@NotNull SQLConfig config) throws Excep
}
public String getConnectionKey(@NotNull SQLConfig config) {
- return getConnectionKey(config.getNamespace(), config.getCatalog(), config.getDatasource(), config.getDatabase());
+ return getConnectionKey(config.getDatabase(), config.getDatasource(), config.getNamespace(), config.getCatalog());
}
public String getConnectionKey(String database, String datasource, String namespace, String catalog) {
return database + "-" + datasource + "-" + namespace + "-" + catalog;
@@ -1541,3 +1541,4 @@ public int executeUpdate(@NotNull SQLConfig config, String sql) throws
}
+
From 0a7f858c0f6304ee2f8b0bbdf55fdf6445622910 Mon Sep 17 00:00:00 2001
From: TommyLemon <1184482681@qq.com>
Date: Sun, 28 Sep 2025 23:19:10 +0800
Subject: [PATCH 32/41] =?UTF-8?q?=E5=B7=A5=E7=A8=8B=E8=BD=BB=E9=87=8F?=
=?UTF-8?q?=E5=B0=8F=E5=B7=A7=20(=E6=97=A0=E7=AC=AC=E4=B8=89=E6=96=B9?=
=?UTF-8?q?=E4=BE=9D=E8=B5=96=EF=BC=8CJar=20=E4=BB=85=20263KB=EF=BC=8CJava?=
=?UTF-8?q?=20=E6=96=87=E4=BB=B6=E4=BB=85=2068=20=E4=B8=AA=E5=85=B1=201486?=
=?UTF-8?q?4=20=E8=A1=8C=E4=BB=A3=E7=A0=81=EF=BC=8C=E4=BE=8B=E5=A6=82=20AP?=
=?UTF-8?q?IJSONORM=208.1.0)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
https://github.com/Tencent/APIJSON?tab=readme-ov-file#%E4%B8%BA%E4%BB%80%E4%B9%88%E9%80%89%E6%8B%A9-apijson
---
README.md | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/README.md b/README.md
index f727c773..ddd56c25 100644
--- a/README.md
+++ b/README.md
@@ -192,7 +192,7 @@ https://github.com/Tencent/APIJSON/wiki
* **解决十大痛点** (可帮前后端开发大幅提振开发效率、强力杜绝联调扯皮、巧妙规避文档缺陷、非常节省流量带宽)
* **开发提速很大** (CRUD 零代码热更新全自动,APIJSONBoot 对比 SSM、SSH 等保守估计可提速 20 倍以上)
* **腾讯官方开源** (使用 GitHub、Gitee、工蜂 等平台的官方账号开源,微信公众号、腾讯云+社区 等官方公告)
-* **社区影响力大** (GitHub 17K+ Star 在 400W Java 项目排名前 100,远超 FLAG, BAT 等国内外绝大部分开源项目)
+* **社区影响力大** (GitHub 18K+ Star 在 400W Java 项目排名前 100,远超 FLAG, BAT 等国内外绝大部分开源项目)
* **各项荣誉成就** (腾讯内外 5 个奖项、腾讯开源前五、腾讯后端 Star 第一、Trending 日周月榜大满贯 等)
* **多样用户案例** (腾讯内有互娱、音乐、微信、云与智慧,外部有华为、华能、百度、快手、中兴、圆通、传音等)
* **适用场景广泛** (社交聊天、阅读资讯、影音娱乐、办公学习 等各种 App、网站、小程序、公众号 等非金融类项目)
@@ -203,7 +203,7 @@ https://github.com/Tencent/APIJSON/wiki
* **灵活定制业务** (在后端编写 远程函数,可以拿到 session、version、当前 JSON 对象 等,然后自定义处理)
* **高质可靠代码** (代码严谨规范,蚂蚁集团源伞 Pinpoint 代码扫描分析报告平均每行代码 Bug 率低至 0.15%)
* **兼容各种项目** (协议不限 HTTP,与其它库无冲突,对各类 Web 框架集成友好且提供 SpringBoot, JFinal 的示例)
-* **工程轻量小巧** (仅依赖 fastjson,Jar 仅 280KB,Java 文件仅 59 个共 13719 行代码,例如 APIJSONORM 4.3.1)
+* **工程轻量小巧** (无第三方依赖,Jar 仅 263KB,Java 文件仅 68 个共 14864 行代码,例如 APIJSONORM 8.1.0)
* **多年持续迭代** (自 2016 年起已连续维护 8 年多,70+ 贡献者、100+ 发版、3000+ 提交,不断更新迭代中...)
**按照一般互联网中小型项目情况可得出以下对比表格:**
From bd6e17fdbdfd6726f59233b7474aa0604d1acc46 Mon Sep 17 00:00:00 2001
From: TommyLemon <1184482681@qq.com>
Date: Thu, 9 Oct 2025 21:18:37 +0800
Subject: [PATCH 33/41] =?UTF-8?q?=E6=96=B0=E5=A2=9E=20APIJSON=20=E7=9A=84?=
=?UTF-8?q?=20jackson=20=E6=8F=92=E4=BB=B6=EF=BC=8C=E7=AE=80=E5=8C=96?=
=?UTF-8?q?=E4=BD=BF=E7=94=A8=EF=BC=9Ahttps://github.com/APIJSON/apijson-j?=
=?UTF-8?q?ackson?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
创作不易,右上角点 ⭐Star 来支持/收藏下吧,谢谢 ^_^
---
README.md | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/README.md b/README.md
index ddd56c25..c42cdcad 100644
--- a/README.md
+++ b/README.md
@@ -643,10 +643,12 @@ Issue/问卷 一般解答顺序:贡献者 > 帮助他人的用户 > 提供任
[apijson-column](https://github.com/APIJSON/apijson-column) APIJSON 的字段插件,支持 字段名映射 和 !key 反选字段
-[apijson-gson](https://github.com/APIJSON/apijson-gson) APIJSON 的 gson 插件,简化使用
+[apijson-jackson](https://github.com/APIJSON/apijson-jackson) APIJSON 的 jackson 插件,简化使用
[apijson-fastjson2](https://github.com/APIJSON/apijson-fastjson2) APIJSON 的 fastjson2 插件,简化使用
+[apijson-gson](https://github.com/APIJSON/apijson-gson) APIJSON 的 gson 插件,简化使用
+
[apijson-milvus](https://github.com/APIJSON/apijson-milvus) APIJSON 的 Milvus AI 向量数据库插件
[apijson-influxdb](https://github.com/APIJSON/apijson-influxdb) APIJSON 的 InfluxDB 物联网时序数据库插件
From 7b43721aa6cd1171698c2e713406769046086f42 Mon Sep 17 00:00:00 2001
From: TommyLemon <1184482681@qq.com>
Date: Mon, 27 Oct 2025 11:12:35 +0800
Subject: [PATCH 34/41] =?UTF-8?q?=E7=94=9F=E6=80=81=E6=96=B0=E5=A2=9E=20AP?=
=?UTF-8?q?IJSON=20=E7=9A=84=20Rust=20=E7=89=88=EF=BC=8C=E4=B8=80=E4=B8=AA?=
=?UTF-8?q?=E4=BC=98=E9=9B=85=E3=80=81=E9=AB=98=E6=80=A7=E8=83=BD=E7=9A=84?=
=?UTF-8?q?=20Rust=20=E5=A4=9A=E6=95=B0=E6=8D=AE=E6=BA=90=E7=AE=A1?=
=?UTF-8?q?=E7=90=86=E7=B3=BB=E7=BB=9F=EF=BC=8C=E6=94=AF=E6=8C=81=20MySQL?=
=?UTF-8?q?=20=E5=92=8C=20PostgreSQL?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
创作不易,右上角点亮 ⭐ Star 收藏/支持下吧,谢谢 ^_^
https://gitee.com/digithub/panda-base
---
README.md | 2 ++
1 file changed, 2 insertions(+)
diff --git a/README.md b/README.md
index c42cdcad..281462b9 100644
--- a/README.md
+++ b/README.md
@@ -689,6 +689,8 @@ Issue/问卷 一般解答顺序:贡献者 > 帮助他人的用户 > 提供任
[uliweb-apijson](https://github.com/zhangchunlin/uliweb-apijson) Python 版 APIJSON,支持 MySQL, PostgreSQL, SQL Server, Oracle, SQLite 等
+[panda-base](https://gitee.com/digithub/panda-base) APIJSON 的 Rust 版,一个优雅、高性能的 Rust 多数据源管理系统,支持 MySQL 和 PostgreSQL
+
[APIJSONParser](https://github.com/Zerounary/APIJSONParser) 第三方 APIJSON 解析器,将 JSON 动态解析成 SQL
[FfApiJson](https://gitee.com/own_3_0/ff-api-json) 用 JSON 格式直接生成 SQL,借鉴 APIJSON 支持多数据源
From 115794ca212bbd62d48537d2bf2aaa557c0cb726 Mon Sep 17 00:00:00 2001
From: TommyLemon <1184482681@qq.com>
Date: Sat, 15 Nov 2025 16:57:03 +0800
Subject: [PATCH 35/41] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E6=94=AF=E6=8C=81=20Da?=
=?UTF-8?q?taBend-=E5=B8=A6=20AI=20=E7=9A=84=E4=BA=91=E5=8E=9F=E7=94=9F?=
=?UTF-8?q?=E6=95=B0=E6=8D=AE=E6=B9=96=E4=BB=93(Snowflake=20=E5=BC=80?=
=?UTF-8?q?=E6=BA=90=E6=9B=BF=E4=BB=A3)=20=E7=9A=84=E8=AF=B4=E6=98=8E?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
https://github.com/APIJSON/APIJSON-Demo/blob/master/APIJSON-Java-Server/APIJSONBoot-MultiDataSource
---
README.md | 1 +
1 file changed, 1 insertion(+)
diff --git a/README.md b/README.md
index 281462b9..e3793602 100644
--- a/README.md
+++ b/README.md
@@ -50,6 +50,7 @@ This source code is licensed under the Apache License Version 2.0
+
From af347bca178da94f6605244be98790ab966a9ea3 Mon Sep 17 00:00:00 2001
From: TommyLemon <1184482681@qq.com>
Date: Sat, 29 Nov 2025 19:15:47 +0800
Subject: [PATCH 36/41] =?UTF-8?q?=E7=99=BB=E8=AE=B0=E6=96=87=E7=AB=A0=20[A?=
=?UTF-8?q?PIJSON=EF=BC=9A=E9=87=8D=E6=96=B0=E5=AE=9A=E4=B9=89=E5=90=8E?=
=?UTF-8?q?=E7=AB=AF=E5=BC=80=E5=8F=91=E4=BD=93=E9=AA=8C=E7=9A=84=E9=9B=B6?=
=?UTF-8?q?=E4=BB=A3=E7=A0=81ORM=E6=A1=86=E6=9E=B6](https://blog.csdn.net/?=
=?UTF-8?q?gitblog=5F01177/article/details/155216163)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
感谢文章作者的贡献,大家 点赞、收藏、转发 支持热心的 TA 吧~
---
README.md | 2 ++
1 file changed, 2 insertions(+)
diff --git a/README.md b/README.md
index e3793602..caadbc9f 100644
--- a/README.md
+++ b/README.md
@@ -633,6 +633,8 @@ Issue/问卷 一般解答顺序:贡献者 > 帮助他人的用户 > 提供任
[springboot整合APIJSON——零代码万能通用 API(附源码)](https://blog.csdn.net/longzhutengyue/article/details/150579233)
+[APIJSON:重新定义后端开发体验的零代码ORM框架](https://blog.csdn.net/gitblog_01177/article/details/155216163)
+
### 生态项目
[APIJSON-Demo](https://github.com/APIJSON/APIJSON-Demo) APIJSON 各种语言、各种框架 的 使用示例项目、上手文档、测试数据 SQL 文件 等
From 78c77a4f3e47e44a50aeb10ea88312562f586473 Mon Sep 17 00:00:00 2001
From: TommyLemon <1184482681@qq.com>
Date: Sun, 7 Dec 2025 19:54:39 +0800
Subject: [PATCH 37/41] =?UTF-8?q?=E5=8D=87=E7=BA=A7=E7=89=88=E6=9C=AC?=
=?UTF-8?q?=E4=B8=BA=208.1.0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
APIJSONORM/pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/APIJSONORM/pom.xml b/APIJSONORM/pom.xml
index bd340fa5..13c5d0bf 100644
--- a/APIJSONORM/pom.xml
+++ b/APIJSONORM/pom.xml
@@ -5,7 +5,7 @@
com.github.Tencent
APIJSON
- 8.0.2
+ 8.1.0
jar
APIJSONORM
From 200be8ffb6e714e8526a9b85b7ef1a3309f7a958 Mon Sep 17 00:00:00 2001
From: TommyLemon <1184482681@qq.com>
Date: Sat, 20 Dec 2025 23:21:19 +0800
Subject: [PATCH 38/41] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E6=96=87=E7=AB=A0=20AP?=
=?UTF-8?q?I=E8=87=AA=E5=8A=A8=E7=94=9F=E6=88=90=E8=BF=99=E4=B9=88?=
=?UTF-8?q?=E7=88=BD=EF=BC=9F=E5=AE=9E=E6=B5=8B=E8=85=BE=E8=AE=AFAPIJSON?=
=?UTF-8?q?=EF=BC=8C=E9=9B=B6=E4=BB=A3=E7=A0=81=E5=B0=B1=E8=83=BD=E7=8E=A9?=
=?UTF-8?q?=E8=BD=AC=E5=90=8E=E7=AB=AF=E6=8E=A5=E5=8F=A3=EF=BC=81?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
感谢 诗远治愈馆 的贡献,点赞、收藏、转发支持下热心的文章作者吧 ^_^
https://mp.weixin.qq.com/s/DmMIGHHcZ783KobGecMxGg
---
README.md | 2 ++
1 file changed, 2 insertions(+)
diff --git a/README.md b/README.md
index caadbc9f..db0f1044 100644
--- a/README.md
+++ b/README.md
@@ -635,6 +635,8 @@ Issue/问卷 一般解答顺序:贡献者 > 帮助他人的用户 > 提供任
[APIJSON:重新定义后端开发体验的零代码ORM框架](https://blog.csdn.net/gitblog_01177/article/details/155216163)
+[API自动生成这么爽?实测腾讯APIJSON,零代码就能玩转后端接口!](https://mp.weixin.qq.com/s/DmMIGHHcZ783KobGecMxGg)
+
### 生态项目
[APIJSON-Demo](https://github.com/APIJSON/APIJSON-Demo) APIJSON 各种语言、各种框架 的 使用示例项目、上手文档、测试数据 SQL 文件 等
From 54f7da08899ff4933fc3c8bf32e2aec9c0469550 Mon Sep 17 00:00:00 2001
From: TommyLemon
Date: Fri, 2 Jan 2026 22:27:26 +0800
Subject: [PATCH 39/41] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=85=B3=E9=94=AE?=
=?UTF-8?q?=E8=AF=8D=20@string=20=E6=8A=8A=E5=AD=97=E6=AE=B5=E8=BD=AC?=
=?UTF-8?q?=E4=B8=BA=20String=20=E8=BE=93=E5=85=A5=EF=BC=9BKEY=5FDEFULT=20?=
=?UTF-8?q?=E9=87=8D=E5=91=BD=E5=90=8D=E4=B8=BA=20KEY=5FDEFAULT=EF=BC=9B?=
=?UTF-8?q?=E5=8D=87=E7=BA=A7=E7=89=88=E6=9C=AC=E4=B8=BA=208.1.3?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
APIJSONORM/pom.xml | 2 +-
APIJSONORM/src/main/java/apijson/JSONMap.java | 89 ++++++++++++-------
.../src/main/java/apijson/JSONResponse.java | 2 +-
APIJSONORM/src/main/java/apijson/Log.java | 2 +-
.../apijson/orm/AbstractObjectParser.java | 20 ++++-
.../java/apijson/orm/AbstractVerifier.java | 41 +++++----
6 files changed, 100 insertions(+), 56 deletions(-)
diff --git a/APIJSONORM/pom.xml b/APIJSONORM/pom.xml
index 13c5d0bf..8b36d0da 100644
--- a/APIJSONORM/pom.xml
+++ b/APIJSONORM/pom.xml
@@ -5,7 +5,7 @@
com.github.Tencent
APIJSON
- 8.1.0
+ 8.1.3
jar
APIJSONORM
diff --git a/APIJSONORM/src/main/java/apijson/JSONMap.java b/APIJSONORM/src/main/java/apijson/JSONMap.java
index 29d88f75..3b93d69d 100755
--- a/APIJSONORM/src/main/java/apijson/JSONMap.java
+++ b/APIJSONORM/src/main/java/apijson/JSONMap.java
@@ -109,19 +109,32 @@ public static boolean isTableArray(String key) {
public static String KEY_USER_ID = "userId";
public static String KEY_USER_ID_IN = KEY_USER_ID + "{}";
+ default String getIdKey() {
+ return KEY_ID;
+ }
+ default String getIdInKey() {
+ return KEY_ID_IN;
+ }
+ default String getUserIdKey() {
+ return KEY_USER_ID;
+ }
+ default String getUserIdInKey() {
+ return KEY_USER_ID_IN;
+ }
+
/**set "id":id in Table layer
* @param id
* @return
*/
default JSONMap setId(Long id) {
- return puts(KEY_ID, id);
+ return puts(getIdKey(), id);
}
/**set "id{}":[] in Table layer
* @param list
* @return
*/
default JSONMap setIdIn(List list) {
- return puts(KEY_ID_IN, list);
+ return puts(getIdInKey(), list);
}
/**set "userId":userId in Table layer
@@ -129,14 +142,14 @@ default JSONMap setIdIn(List list) {
* @return
*/
default JSONMap setUserId(Long id) {
- return puts(KEY_USER_ID, id);
+ return puts(getUserIdKey(), id);
}
/**set "userId{}":[] in Table layer
* @param list
* @return
*/
default JSONMap setUserIdIn(List list) {
- return puts(KEY_USER_ID_IN, list);
+ return puts(getUserIdInKey(), list);
}
@@ -150,36 +163,37 @@ default JSONMap setUserIdIn(List list) {
//@key关键字都放这个类 <<<<<<<<<<<<<<<<<<<<<<
- String KEY_TRY = "@try"; //尝试,忽略异常
- String KEY_CATCH = "@catch"; //TODO 捕捉到异常后,处理方式 null-不处理;DEFAULT-返回默认值;ORIGIN-返回请求里的原始值
- String KEY_DROP = "@drop"; //丢弃,不返回,TODO 应该通过 fastjson 的 ignore 之类的机制来处理,避免导致下面的对象也不返回
- // String KEY_KEEP = "@keep"; //一定会返回,为 null 或 空对象时,会使用默认值(非空),解决其它对象因为不关联的第一个对为空导致也不返回
- String KEY_DEFULT = "@default"; //TODO 自定义默认值 { "@default":true },@default 可完全替代 @keep
- String KEY_NULL = "@null"; //值为 null 的键值对 "@null":"tag,pictureList",允许 is NULL 条件判断, SET tag = NULL 修改值为 NULL 等
- String KEY_CAST = "@cast"; //类型转换 cast(date AS DATE)
-
- String KEY_ROLE = "@role"; //角色,拥有对某些数据的某些操作的权限
- String KEY_DATABASE = "@database"; //数据库类型,默认为MySQL
- String KEY_DATASOURCE = "@datasource"; //数据源
- String KEY_NAMESPACE = "@namespace"; //命名空间,Table 在非默认 namespace 内时需要声明
- String KEY_CATALOG = "@catalog"; //目录,Table 在非默认 catalog 内时需要声明
- String KEY_SCHEMA = "@schema"; //数据库,Table 在非默认 schema 内时需要声明
- String KEY_EXPLAIN = "@explain"; //分析 true/false
- String KEY_CACHE = "@cache"; //缓存 RAM/ROM/ALL
- String KEY_COLUMN = "@column"; //查询的Table字段或SQL函数
- String KEY_FROM = "@from"; //FROM语句
- String KEY_COMBINE = "@combine"; //条件组合,每个条件key前面可以放&,|,!逻辑关系 "id!{},&sex,!name&$"
- String KEY_GROUP = "@group"; //分组方式
- String KEY_HAVING = "@having"; //聚合函数条件,一般和@group一起用
- String KEY_HAVING_AND = "@having&"; //聚合函数条件,一般和@group一起用
- String KEY_SAMPLE = "@sample"; //取样方式
- String KEY_LATEST = "@latest"; //最近方式
- String KEY_PARTITION = "@partition"; //分区方式
- String KEY_FILL = "@fill"; //填充方式
- String KEY_ORDER = "@order"; //排序方式
+ String KEY_TRY = "@try"; // 尝试,忽略异常
+ String KEY_CATCH = "@catch"; // TODO 捕捉到异常后,处理方式 null-不处理;DEFAULT-返回默认值;ORIGIN-返回请求里的原始值
+ String KEY_DROP = "@drop"; // 丢弃,不返回,TODO 应该通过 fastjson 的 ignore 之类的机制来处理,避免导致下面的对象也不返回
+ // String KEY_KEEP = "@keep"; // 一定会返回,为 null 或 空对象时,会使用默认值(非空),解决其它对象因为不关联的第一个对为空导致也不返回
+ String KEY_DEFAULT = "@default"; // TODO 自定义默认值 { "@default":true },@default 可完全替代 @keep
+ String KEY_NULL = "@null"; // 值为 null 的键值对 "@null":"tag,pictureList",允许 is NULL 条件判断, SET tag = NULL 修改值为 NULL 等
+ String KEY_CAST = "@cast"; // 类型转换 cast(date AS DATE)
+
+ String KEY_ROLE = "@role"; // 角色,拥有对某些数据的某些操作的权限
+ String KEY_DATABASE = "@database"; // 数据库类型,默认为MySQL
+ String KEY_DATASOURCE = "@datasource"; // 数据源
+ String KEY_NAMESPACE = "@namespace"; // 命名空间,Table 在非默认 namespace 内时需要声明
+ String KEY_CATALOG = "@catalog"; // 目录,Table 在非默认 catalog 内时需要声明
+ String KEY_SCHEMA = "@schema"; // 数据库,Table 在非默认 schema 内时需要声明
+ String KEY_EXPLAIN = "@explain"; // 分析 true/false
+ String KEY_CACHE = "@cache"; // 缓存 RAM/ROM/ALL
+ String KEY_COLUMN = "@column"; // 查询的 Table 字段或 SQL 函数
+ String KEY_FROM = "@from"; // FROM语句
+ String KEY_COMBINE = "@combine"; // 条件组合,每个条件 key 前面可以放 &,|,! 逻辑关系 "id!{},&sex,!name&$"
+ String KEY_GROUP = "@group"; // 分组方式
+ String KEY_HAVING = "@having"; // 聚合函数条件,一般和 @group 一起用
+ String KEY_HAVING_AND = "@having&"; // 聚合函数条件,一般和 @group 一起用
+ String KEY_SAMPLE = "@sample"; // 取样方式
+ String KEY_LATEST = "@latest"; // 最近方式
+ String KEY_PARTITION = "@partition"; // 分区方式
+ String KEY_FILL = "@fill"; // 填充方式
+ String KEY_ORDER = "@order"; // 排序方式
String KEY_KEY = "@key"; // key 映射,year:left(date,4);name_tag:(name,tag)
String KEY_RAW = "@raw"; // 自定义原始 SQL 片段
- String KEY_JSON = "@json"; //SQL Server 把字段转为 JSON 输出
+ String KEY_JSON = "@json"; // 把字段转为 JSON 输出
+ String KEY_STRING = "@string"; // 把字段转为 String 输入
String KEY_METHOD = "@method"; // json 对象配置操作方法
String KEY_GET = "@get"; // json 对象配置操作方法
String KEY_GETS = "@gets"; // json 对象配置操作方法
@@ -214,6 +228,7 @@ default JSONMap setUserIdIn(List list) {
KEY_KEY,
KEY_RAW,
KEY_JSON,
+ KEY_STRING,
KEY_METHOD,
KEY_GET,
KEY_GETS,
@@ -255,7 +270,7 @@ default JSONMap setDrop(Boolean drop) {
* @return this
*/
default JSONMap setDefault(Boolean hasDefault) {
- return puts(KEY_DEFULT, hasDefault);
+ return puts(KEY_DEFAULT, hasDefault);
}
@@ -525,6 +540,14 @@ default JSONMap setJson(String keys) {
return puts(KEY_JSON, keys);
}
+ /**set keys to cast to string
+ * @param keys "key0,key1,key2..."
+ * @return
+ */
+ default JSONMap setString(String keys) {
+ return puts(KEY_STRING, keys);
+ }
+
//JSONObject内关键词 key >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
diff --git a/APIJSONORM/src/main/java/apijson/JSONResponse.java b/APIJSONORM/src/main/java/apijson/JSONResponse.java
index c39aa1ac..7527adff 100755
--- a/APIJSONORM/src/main/java/apijson/JSONResponse.java
+++ b/APIJSONORM/src/main/java/apijson/JSONResponse.java
@@ -119,7 +119,7 @@ public static String getMsg(Map response) {
*/
default long getId() {
try {
- return JSON.getLongValue(this, KEY_ID);
+ return JSON.getLongValue(this, getIdKey());
} catch (Exception e) {
//empty
}
diff --git a/APIJSONORM/src/main/java/apijson/Log.java b/APIJSONORM/src/main/java/apijson/Log.java
index ba1a03bd..9cbacd0a 100755
--- a/APIJSONORM/src/main/java/apijson/Log.java
+++ b/APIJSONORM/src/main/java/apijson/Log.java
@@ -14,7 +14,7 @@ public class Log {
public static boolean DEBUG = true;
- public static final String VERSION = "8.0.2";
+ public static final String VERSION = "8.1.3";
public static final String KEY_SYSTEM_INFO_DIVIDER = "\n---|-----APIJSON SYSTEM INFO-----|---\n";
public static final String OS_NAME;
diff --git a/APIJSONORM/src/main/java/apijson/orm/AbstractObjectParser.java b/APIJSONORM/src/main/java/apijson/orm/AbstractObjectParser.java
index 4d56499a..0e6aaa78 100755
--- a/APIJSONORM/src/main/java/apijson/orm/AbstractObjectParser.java
+++ b/APIJSONORM/src/main/java/apijson/orm/AbstractObjectParser.java
@@ -61,6 +61,7 @@ public AbstractObjectParser setParser(Parser parser) {
* TODO Parser内要不因为 非 TYPE_ITEM_CHILD_0 的Table 为空导致后续中断。
*/
protected final boolean drop;
+ private List stringKeyList;
/**for single object
*/
@@ -103,7 +104,12 @@ public AbstractObjectParser(@NotNull M request, String parentPath, SQLConfig parse(String name, boolean isReuse) throws
// hasOtherKeyNotFun = true;
// }
- if (startsWithAt || key.endsWith("@") || (key.endsWith("<>") && value instanceof Map, ?>)) {
+ if (stringKeyList != null && stringKeyList.contains(key)) {
+ // 统一格式 String val = value == null || value instanceof String ? (String) value : JSON.toJSONString(value);
+ if (onParse(key, JSON.toJSONString(value)) == false) {
+ invalidate();
+ }
+ }
+ else if (startsWithAt || key.endsWith("@") || (key.endsWith("<>") && value instanceof Map, ?>)) {
if (onParse(key, value) == false) {
invalidate();
}
@@ -1227,7 +1239,9 @@ public void recycle() {
if (drop) {
request.put(KEY_DROP, drop);
}
-
+ if (stringKeyList != null) { // 避免被全局关键词覆盖 && ! stringKeyList.isEmpty()) {
+ request.put(KEY_STRING, StringUtil.get(stringKeyList.toArray()));
+ }
method = null;
parentPath = null;
diff --git a/APIJSONORM/src/main/java/apijson/orm/AbstractVerifier.java b/APIJSONORM/src/main/java/apijson/orm/AbstractVerifier.java
index 44b2d7f1..55eeff40 100755
--- a/APIJSONORM/src/main/java/apijson/orm/AbstractVerifier.java
+++ b/APIJSONORM/src/main/java/apijson/orm/AbstractVerifier.java
@@ -6,8 +6,7 @@
package apijson.orm;
import static apijson.JSON.*;
-import static apijson.JSONMap.KEY_COMBINE;
-import static apijson.JSONMap.KEY_KEY;
+import static apijson.JSONMap.*;
import static apijson.RequestMethod.DELETE;
import static apijson.RequestMethod.GET;
import static apijson.RequestMethod.GETS;
@@ -923,6 +922,16 @@ public static , L extends List> M parse
return null;
}
+ Object _if = target.get(IF.name());
+ boolean ifIsStr = _if instanceof String && StringUtil.isNotEmpty(_if, true);
+ M ifObj = ifIsStr == false && _if instanceof Map,?> ? (M) _if : null;
+// : (_if instanceof String ? new apijson.JSONMap((String) _if, "" /* "throw new Error('')" */ ) : null);
+ if (ifObj == null && _if != null && ifIsStr == false) {
+// if (_if instanceof List>) {
+// }
+ throw new IllegalArgumentException(name + ": { " + IF.name() + ": value } 中 value 类型错误!只允许 String, JSONRequest!");
+ }
+
// 获取配置<<<<<<<<<<<<<<<<<<<<<<<<<<<<
M type = JSON.get(target, TYPE.name());
M verify = JSON.get(target, VERIFY.name());
@@ -936,21 +945,8 @@ public static , L extends List> M parse
String must = StringUtil.get(getString(target, MUST.name()));
String refuse = StringUtil.get(getString(target, REFUSE.name()));
- Object _if = target.get(IF.name());
- boolean ifIsStr = _if instanceof String && StringUtil.isNotEmpty(_if, true);
- M ifObj = ifIsStr == false && _if instanceof Map,?> ? (M) _if : null;
-// : (_if instanceof String ? new apijson.JSONMap((String) _if, "" /* "throw new Error('')" */ ) : null);
- if (ifObj == null && _if != null && ifIsStr == false) {
-// if (_if instanceof List>) {
-// }
- throw new IllegalArgumentException(name + ": { " + IF.name() + ": value } 中 value 类型错误!只允许 String, JSONRequest!");
- }
-
// Object code = target.get(CODE.name());
- String allowPartialUpdateFail = StringUtil.get(getString(target, ALLOW_PARTIAL_UPDATE_FAIL.name()));
-
-
// 移除字段<<<<<<<<<<<<<<<<<<<
String[] removes = StringUtil.split(remove);
if (removes != null && removes.length > 0) {
@@ -976,6 +972,8 @@ public static , L extends List> M parse
}
// 判断必要字段是否都有>>>>>>>>>>>>>>>>>>>
+ String[] sks = StringUtil.split(getString(real, KEY_STRING));
+ List stringKeyList = sks == null || sks.length <= 0 ? null : Arrays.asList(sks);
Set objKeySet = new HashSet(); // 不能用tableKeySet,仅判断 Table:{} 会导致 key:{ Table:{} } 绕过判断
@@ -991,6 +989,10 @@ public static , L extends List> M parse
}
Object tvalue = entry.getValue();
Object rvalue = real.get(key);
+ if (rvalue != null && stringKeyList != null && stringKeyList.contains(key)) {
+ rvalue = JSON.toJSONString(rvalue);
+ }
+
if (callback.onParse(key, tvalue, rvalue) == false) {
continue;
}
@@ -1091,8 +1093,8 @@ public static , L extends List> M parse
// 判断不允许传的key<<<<<<<<<<<<<<<<<<<<<<<<<
for (String rk : rkset) {
- if (rk == null) { // 无效的key
- real.remove(rk);
+ if (rk == null || KEY_STRING.equals(rk)) {
+ // ConcurrentModificationException real.remove(rk);
continue;
}
@@ -1111,6 +1113,9 @@ public static , L extends List> M parse
}
Object rv = real.get(rk);
+ if (rv != null && stringKeyList != null && stringKeyList.contains(rk)) {
+ rv = JSON.toJSONString(rv);
+ }
// 不允许传远程函数,只能后端配置
if (rk.endsWith("()") && rv instanceof String) {
@@ -1192,6 +1197,7 @@ public static , L extends List> M parse
// 校验重复>>>>>>>>>>>>>>>>>>>
// 校验并配置允许批量增删改部分失败<<<<<<<<<<<<<<<<<<<
+ String allowPartialUpdateFail = StringUtil.get(getString(target, ALLOW_PARTIAL_UPDATE_FAIL.name()));
String[] partialFails = StringUtil.split(allowPartialUpdateFail);
if (partialFails != null && partialFails.length > 0) {
for (String key : partialFails) {
@@ -1300,6 +1306,7 @@ public static , L extends List> M parse
}
}
}
+
Log.i(TAG, "parse return real = " + JSON.toJSONString(real));
return real;
}
From abcf2974ade386599670180d44931194bf8a7deb Mon Sep 17 00:00:00 2001
From: TommyLemon <1184482681@qq.com>
Date: Fri, 2 Jan 2026 22:57:49 +0800
Subject: [PATCH 40/41] =?UTF-8?q?=E6=96=B0=E5=A2=9E=20Rust=20=E7=89=88=20A?=
=?UTF-8?q?PIJSON=20-=20=E4=B8=80=E4=B8=AA=E4=BC=98=E9=9B=85=E3=80=81?=
=?UTF-8?q?=E9=AB=98=E6=80=A7=E8=83=BD=E7=9A=84=E5=A4=9A=E6=95=B0=E6=8D=AE?=
=?UTF-8?q?=E6=BA=90=E7=AE=A1=E7=90=86=E7=B3=BB=E7=BB=9F=EF=BC=8C=E6=94=AF?=
=?UTF-8?q?=E6=8C=81=20MySQL,=20PostgreSQL=20=E7=9A=84=E7=BB=9F=E4=B8=80?=
=?UTF-8?q?=E7=AE=A1=E7=90=86=E5=92=8C=E6=93=8D=E4=BD=9C?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
创作不易,右上角点亮 ⭐️ Star 支持下热心的作者吧 ^_^
---
README.md | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/README.md b/README.md
index db0f1044..46d3ecda 100644
--- a/README.md
+++ b/README.md
@@ -60,6 +60,7 @@ This source code is licensed under the Apache License Version 2.0
+
@@ -694,7 +695,7 @@ Issue/问卷 一般解答顺序:贡献者 > 帮助他人的用户 > 提供任
[uliweb-apijson](https://github.com/zhangchunlin/uliweb-apijson) Python 版 APIJSON,支持 MySQL, PostgreSQL, SQL Server, Oracle, SQLite 等
-[panda-base](https://gitee.com/digithub/panda-base) APIJSON 的 Rust 版,一个优雅、高性能的 Rust 多数据源管理系统,支持 MySQL 和 PostgreSQL
+[apijson-rust](https://gitee.com/APIJSON/panda-base) APIJSON 的 Rust 版,一个优雅、高性能的 Rust 多数据源管理系统,支持 MySQL 和 PostgreSQL
[APIJSONParser](https://github.com/Zerounary/APIJSONParser) 第三方 APIJSON 解析器,将 JSON 动态解析成 SQL
From 906e7961f7995ead0c981104c37586367f053a6d Mon Sep 17 00:00:00 2001
From: TommyLemon <1184482681@qq.com>
Date: Mon, 19 Jan 2026 01:04:46 +0800
Subject: [PATCH 41/41] =?UTF-8?q?Java=EF=BC=9A=E5=88=A0=E9=99=A4=E5=A4=9A?=
=?UTF-8?q?=E4=BD=99=E7=9A=84=20application.properties?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
APIJSONORM/src/main/resources/application.properties | 0
1 file changed, 0 insertions(+), 0 deletions(-)
delete mode 100755 APIJSONORM/src/main/resources/application.properties
diff --git a/APIJSONORM/src/main/resources/application.properties b/APIJSONORM/src/main/resources/application.properties
deleted file mode 100755
index e69de29b..00000000