├── .github
└── ISSUE_TEMPLATE
│ ├── bug_report.yml
│ ├── config.yml
│ ├── feature_request.yml
│ └── other_issues.yml
├── .gitignore
├── APIJSONORM
├── .gitignore
├── README.md
├── pom.xml
└── src
│ └── main
│ ├── java
│ └── apijson
│ │ ├── JSON.java
│ │ ├── JSONCreator.java
│ │ ├── JSONList.java
│ │ ├── JSONMap.java
│ │ ├── JSONParser.java
│ │ ├── JSONRequest.java
│ │ ├── JSONResponse.java
│ │ ├── Log.java
│ │ ├── MethodAccess.java
│ │ ├── NotNull.java
│ │ ├── RequestMethod.java
│ │ ├── SQL.java
│ │ ├── StringUtil.java
│ │ ├── orm
│ │ ├── AbstractFunctionParser.java
│ │ ├── AbstractObjectParser.java
│ │ ├── AbstractParser.java
│ │ ├── AbstractSQLConfig.java
│ │ ├── AbstractSQLExecutor.java
│ │ ├── AbstractVerifier.java
│ │ ├── Entry.java
│ │ ├── FunctionParser.java
│ │ ├── JSONRequest.java
│ │ ├── Join.java
│ │ ├── Logic.java
│ │ ├── ObjectParser.java
│ │ ├── OnParseCallback.java
│ │ ├── Operation.java
│ │ ├── Pair.java
│ │ ├── Parser.java
│ │ ├── ParserCreator.java
│ │ ├── SQLConfig.java
│ │ ├── SQLCreator.java
│ │ ├── SQLExecutor.java
│ │ ├── Subquery.java
│ │ ├── Verifier.java
│ │ ├── VerifierCreator.java
│ │ ├── Visitor.java
│ │ ├── exception
│ │ │ ├── CommonException.java
│ │ │ ├── ConditionErrorException.java
│ │ │ ├── ConflictException.java
│ │ │ ├── NotExistException.java
│ │ │ ├── NotLoggedInException.java
│ │ │ ├── OutOfRangeException.java
│ │ │ ├── UnsupportedDataTypeException.java
│ │ │ └── package-info.java
│ │ ├── model
│ │ │ ├── Access.java
│ │ │ ├── AllColumn.java
│ │ │ ├── AllColumnComment.java
│ │ │ ├── AllTable.java
│ │ │ ├── AllTableComment.java
│ │ │ ├── Column.java
│ │ │ ├── Document.java
│ │ │ ├── ExtendedProperty.java
│ │ │ ├── Function.java
│ │ │ ├── PgAttribute.java
│ │ │ ├── PgClass.java
│ │ │ ├── Request.java
│ │ │ ├── Script.java
│ │ │ ├── SysColumn.java
│ │ │ ├── SysTable.java
│ │ │ ├── Table.java
│ │ │ ├── TestRecord.java
│ │ │ └── package-info.java
│ │ ├── package-info.java
│ │ └── script
│ │ │ ├── JSR223ScriptExecutor.java
│ │ │ ├── JavaScriptExecutor.java
│ │ │ └── ScriptExecutor.java
│ │ └── package-info.java
│ └── resources
│ └── application.properties
├── APIJSON初期构思及实现.docx
├── APIJSON初期构思及实现.pages
├── CONTRIBUTING.md
├── CONTRIBUTING_COMMIT.md
├── Document-English.md
├── Document.md
├── LICENSE
├── Navigation.md
├── README-English.md
├── README-extend.md
├── README.md
├── Roadmap.md
├── assets
├── 1542255627809.png
├── 1542338464474.png
├── 1542345654422.png
├── 1542345887787.png
├── 1542350018926.png
├── 1542350219020.png
├── 1542357146401.png
├── 1542357265371.png
├── 1543975054594.png
├── 1543975563775.png
├── 1543975563776.png
├── 1543978123163.png
├── 1543983739325.png
├── 1543983787388.png
├── 1544515879364.png
├── 1544659314099.png
├── 1545468294295.png
├── 1545468341131.png
├── 1545468361962.png
└── a
├── logo.png
└── 详细的说明文档.md
/.github/ISSUE_TEMPLATE/bug_report.yml:
--------------------------------------------------------------------------------
1 | name: Bug Report/报告 bug
2 | description: "Create a report to help us improve, please read FAQ first./帮助我们更好地改进项目,但请先阅读常见问题与提问前必看,不要提已有的重复问题!"
3 | title: "[Bug] "
4 | labels: [kind/bug]
5 | body:
6 | - type: markdown
7 | attributes:
8 | value: "如果你已经知道问题所在、怎么解决,请直接 提交 Pull Request 为社区做贡献,非常感谢。\n开发者也是人,也需要工作、休息、恋爱、陪伴家人、走亲会友等,也有心情不好和身体病痛,\n往往没有额外的时间精力顾及一些小问题,请理解和支持,开源要大家参与贡献才会更美好~\n少数个人的热情终有被耗尽的一天,只有大家共同建设和繁荣社区,才能让开源可持续发展! "
9 |
10 | - type: input
11 | attributes:
12 | label: APIJSON Version/APIJSON 版本号
13 | placeholder: |
14 | e.g./例如 5.4.0 ,如果不是最新版请用最新版,复现问题再来,原则上不更新旧版,而是只维护一个最新版
15 |
16 | validations:
17 | required: true
18 |
19 | - type: input
20 | attributes:
21 | label: Database Type & Version/数据库类型及版本号
22 | placeholder: |
23 | e.g./例如 MySQL 5.7.34
24 |
25 | validations:
26 | required: true
27 |
28 | - type: textarea
29 | attributes:
30 | label: Environment/环境信息
31 | description: |
32 | e.g./例如:
33 | - **JDK/基础库**: 1.8.0_17
34 | - **OS/系统**: MacOS Monterey 12.6 (21G115) M1
35 | value: |
36 | - JDK/基础库:
37 | - OS/系统:
38 | render: markdown
39 |
40 | validations:
41 | required: true
42 |
43 | - type: input
44 | attributes:
45 | label: APIAuto Screenshots/APIAuto 请求与结果完整截屏
46 | description: "Upload by copy and paste image file or url./复制图片文件或 URL 再粘贴到输入框(用 APIAuto 能静态检查出很多问题,甚至还有修复建议,不用浪费你我的时间)\n https://github.com/TommyLemon/APIAuto "
47 | value:
48 |
49 | validations:
50 | required: true
51 |
52 | - type: textarea
53 | attributes:
54 | label: Current Behavior/问题描述
55 | description: "A concise description of what you're experiencing. Must contains screenshots./\n\n**提 bug 请发请求和响应的【完整截屏】,没图的自行解决!\n开发者有限的时间和精力主要放在【维护项目源码和文档】上!\n【描述不详细】 或 【文档/常见问题 已有答案】 的问题可能会被忽略!!\n【态度 不文明/不友善】的可能会被拉黑,问题也可能不予解答!!!**\n\n请求参数 JSON 中表名、字段名、关键词及对应的值都是大小写敏感、逗号敏感、分号敏感、空格敏感、换行敏感,\n大部分情况都不允许空格和换行,表名以大写字母开头,不要想当然,请严格按照 设计规范 来调用 API \n https://github.com/Tencent/APIJSON/issues/181 "
56 | render: markdown
57 |
58 | validations:
59 | required: true
60 |
61 | - type: textarea
62 | attributes:
63 | label: Expected Behavior/期望结果
64 | description: A concise description of what you expected to happen./具体描述你期望返回什么样的结果或者达到什么样的效果?
65 | render: markdown
66 |
67 | validations:
68 | required: false
69 |
70 |
71 | - type: textarea
72 | attributes:
73 | label: Any additional comments?/其它补充说明?
74 | description: |
75 | e.g. some background/context of how you ran into this bug./例如:一些背景或上下文信息,包括复现步骤、相关日志等
76 | render: markdown
77 |
78 | validations:
79 | required: false
80 |
81 | - type: markdown
82 | attributes:
83 | value: "Please follow the rules to fulfil all required inputs. You can add screenshots by comment after submit this issue./\n请按要求填写所有必填项,未填完将提交不了!\n如果随意填写敷衍了事,将直接关闭 issue,问题不会得到解答!\n可以提交后再通过回复评论来补充上传截屏图片(复制粘贴文件)。\n如果是网页 bug 等与你无关的原因导致提交不了,可以改为填问卷:\n https://wj.qq.com/s2/10971431/2a09 "
84 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/config.yml:
--------------------------------------------------------------------------------
1 | blank_issues_enabled: false
2 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/feature_request.yml:
--------------------------------------------------------------------------------
1 | name: Feature Request/期望新增功能
2 | description: Request a new feature/期望新增什么样的功能或特性,或者做哪些方面的改进?
3 | title: "[Feature] "
4 | labels: [kind/feature]
5 | body:
6 | - type: textarea
7 | attributes:
8 | label: Description
9 | description: |
10 | Please describe what this feature does./具体描述下是什么样的功能或特性,以及你为什么想要它,用在什么场景,碰到了什么痛点,有什么解决思路,尝试过哪些,效果怎样?
11 |
12 | validations:
13 | required: true
14 |
15 | - type: markdown
16 | attributes:
17 | value: 推荐去建议收集箱提问,也方便 统一检索和管理、投票决定优先级、更新处理进度 等: https://github.com/Tencent/APIJSON/issues/37
18 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/other_issues.yml:
--------------------------------------------------------------------------------
1 | name: Other Issues/其它反馈
2 | description: For questions, suggestions, improvements and others./问题(非 bug)、建议(非新增功能) 或 其它
3 | title: "[xxx] "
4 | body:
5 | - type: textarea
6 | attributes:
7 | label: Description
8 | description: |
9 | Please describe the issue./请具体描述,包括是什么、为什么、如何做
10 |
11 | validations:
12 | required: true
13 |
14 | - type: markdown
15 | attributes:
16 | value: "Bug 反馈请使用正确的模板,用错模板将直接关闭 issue,不予解答:\n https://github.com/Tencent/APIJSON/issues/new?assignees=&labels=kind%2Fbug&template=bug_report.yml&title=%5BBug%5D+ \n有建议请去建议收集箱提问,也方便 统一检索和管理、投票决定优先级、更新处理进度 等:\n https://github.com/Tencent/APIJSON/issues/37 "
17 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | .gradle
3 | yarn.lock
4 | *.project
5 |
6 | HELP.md
7 | target/
8 | !.mvn/wrapper/maven-wrapper.jar
9 | !**/src/main/**
10 | !**/src/test/**
11 |
12 | ### STS ###
13 | .apt_generated
14 | .classpath
15 | .factorypath
16 | .project
17 | .settings
18 | .springBeans
19 | .sts4-cache
20 |
21 | ### IntelliJ IDEA ###
22 | .idea
23 | *.iws
24 | *.iml
25 | *.ipr
26 |
27 | ### NetBeans ###
28 | /nbproject/private/
29 | /nbbuild/
30 | /dist/
31 | /nbdist/
32 | /.nb-gradle/
33 | build/
34 |
35 | ### VS Code ###
36 | .vscode/
37 | APIJSONORM/bin
38 | *.DS_Store
39 |
--------------------------------------------------------------------------------
/APIJSONORM/.gitignore:
--------------------------------------------------------------------------------
1 | /target/
2 |
--------------------------------------------------------------------------------
/APIJSONORM/README.md:
--------------------------------------------------------------------------------
1 | # APIJSONORM [](https://jitpack.io/#Tencent/APIJSON) [
](https://deepwiki.com/Tencent/APIJSON)
2 | 腾讯 [APIJSON](https://github.com/Tencent/APIJSON) ORM 库,可通过 Maven, Gradle 等远程依赖。
3 | Tencent [APIJSON](https://github.com/Tencent/APIJSON) ORM library for remote dependencies with Maven, Gradle, etc.
4 |
5 | ### Maven
6 | #### 1. 在 pom.xml 中添加 JitPack 仓库
7 | #### 1. Add the JitPack repository to pom.xml
8 | ```xml
9 |
10 |
11 | jitpack.io
12 | https://jitpack.io
13 |
14 |
15 | ```
16 |
17 |
18 | #### 2. 在 pom.xml 中添加 APIJSON 依赖
19 | #### 2. Add the APIJSON dependency to pom.xml
20 | ```xml
21 |
22 | com.github.Tencent
23 | APIJSON
24 | LATEST
25 |
26 | ```
27 |
28 |
29 |
30 |
31 | ### Gradle
32 | #### 1. 在项目根目录 build.gradle 中最后添加 JitPack 仓库
33 | #### 1. Add the JitPack repository in your root build.gradle at the end of repositories
34 | ```gradle
35 | allprojects {
36 | repositories {
37 | ...
38 | maven { url 'https://jitpack.io' }
39 | }
40 | }
41 | ```
42 |
43 |
44 | #### 2. 在项目某个 module 目录(例如 `app`) build.gradle 中添加 apijson-orm 依赖
45 | #### 2. Add the APIJSON dependency in one of your modules(such as `app`)
46 | ```gradle
47 | dependencies {
48 | implementation 'com.github.Tencent:APIJSON:latest'
49 | }
50 | ```
51 |
52 |
53 |
54 |
55 | ### FASTJSON 2
56 | #### Code
57 | https://github.com/Tencent/APIJSON/tree/fastjson2
58 |
59 | #### Maven
60 | https://mvnrepository.com/artifact/com.github.linushp/zikai-apijson/1.0
61 |
62 |
63 |
64 | ### Unit Test
65 | http://apijson.cn/unit
66 |
--------------------------------------------------------------------------------
/APIJSONORM/pom.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 | 4.0.0
5 |
6 | com.github.Tencent
7 | APIJSON
8 | 8.0.0
9 | jar
10 |
11 | APIJSONORM
12 | APIJSON ORM Library
13 |
14 |
15 | UTF-8
16 | UTF-8
17 | 1.8
18 | UTF-8
19 | 1.8
20 | 1.8
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 | org.apache.maven.plugins
30 | maven-compiler-plugin
31 | 3.12.1
32 |
33 | 1.8
34 | 1.8
35 |
36 |
37 |
38 |
39 | org.apache.maven.plugins
40 | maven-source-plugin
41 | 3.2.1
42 |
43 |
44 | package
45 |
46 | jar-no-fork
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
--------------------------------------------------------------------------------
/APIJSONORM/src/main/java/apijson/JSONCreator.java:
--------------------------------------------------------------------------------
1 | /*Copyright (C) 2020 THL A29 Limited, a Tencent company. All rights reserved.
2 |
3 | This source code is licensed under the Apache License Version 2.0.*/
4 |
5 |
6 | package apijson;
7 |
8 | import java.util.Collection;
9 | import java.util.List;
10 | import java.util.Map;
11 |
12 | /**JSON相关创建器
13 | * @author Lemon
14 | */
15 | public interface JSONCreator, L extends List