🏆 实时 零代码、全功能、强安全 ORM 库 🚀 后端接口和文档零代码,前端(客户端) 定制返回 JSON 的数据和结构 🏆 Real-Time coding-free, powerful and secure ORM 🚀 providing APIs and Docs without coding by Backend, and the returned JSON of API can be customized by Frontend(Client) users
OTHER License
Bot releases are hidden (Show)
兼容 jdk1.8+ 及 SpringBoot2.x;
完整 Demo 见以下 Assets 附件 APIJSONBoot-MultiDataSource-APIJSON-7.0.3-jdk1.8-springboot2.5.zip。
如果有用到 apijson-framework,必须 6.3.0,并且排除它依赖的 APIJSON ORM;
如果有用到 apijson-column 或 apijson-router,都必须用 1.8.0,并且排除它们依赖的 APIJSON ORM;
<!-- 可使用 libs 目录的 apijson-orm.jar, apijson-framework.jar, apijson-column.jar 来替代,两种方式二选一 <<<<<<<<<< -->
<dependency>
<groupId>com.github.Tencent</groupId>
<artifactId>APIJSON</artifactId>
<version>7.0.3-jdk1.8</version>
</dependency>
<dependency>
<groupId>com.github.APIJSON</groupId>
<artifactId>apijson-framework</artifactId>
<version>6.3.0</version>
<exclusions>
<exclusion>
<groupId>com.github.Tencent</groupId>
<artifactId>APIJSON</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.github.APIJSON</groupId>
<artifactId>apijson-column</artifactId>
<version>1.8.0</version>
<exclusions>
<exclusion>
<groupId>com.github.Tencent</groupId>
<artifactId>APIJSON</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.github.APIJSON</groupId>
<artifactId>apijson-router</artifactId>
<version>1.8.0</version>
<exclusions>
<exclusion>
<groupId>com.github.Tencent</groupId>
<artifactId>APIJSON</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- 可使用 libs 目录的 apijson-orm.jar, apijson-framework.jar, apijson-column.jar 来替代,两种方式二选一 >>>>>>>>>> -->
Published by TommyLemon 3 months ago
兼容 JDK 1.8+
Published by TommyLemon 3 months ago
兼容 JDK 1.8+
Published by TommyLemon 3 months ago
重新依赖 javax.activation;
java.version 及 maven-compiler-plugin 配置 source, target 都改为 1.8;
删除打包 JDK17+ 的 jitpack.yml;
Published by TommyLemon 4 months ago
新增支持 key[]:{ query:2 或 query:"ALL" } 默认返回列表分页信息;
新增把引用赋值路径 URL encode 后的值 decode 回原始值,例如 %2Fuser%2Flist -> /user/list;
解决 format: true 对应 key 返回不是小驼峰,而是强制小写,例如 User[] 返回不是 userList 而是 userlist;
Published by TommyLemon 5 months ago
feat: 实现和配置 TABLE_SCHEMA_MAP 映射表名和数据库(模式)名,感谢 @csx-bill 的贡献 #27
Published by TommyLemon 5 months ago
7.0.0
Published by TommyLemon 9 months ago
多字段 IN;函数做 key;
完善远程函数等;
解决 jitpack 打包失败;
从主分支同步过来,包括 6.3.0 及之后的一些更改:
https://github.com/Tencent/APIJSON/releases/tag/6.3.0
https://github.com/Tencent/APIJSON/pull/667
Published by TommyLemon 9 months ago
create jitpack.yml
Published by TommyLemon 9 months ago
pom.xml 新增 encoding 配置
Published by TommyLemon 9 months ago
从主分支同步过来,包括 6.3.0 及之后的一些更改:
https://github.com/Tencent/APIJSON/releases/tag/6.3.0
https://github.com/Tencent/APIJSON/pull/667
Published by TommyLemon 10 months ago
新增支持多字段 IN,SQL 函数 作为 表达式 左侧 值 等条件;
@raw 原始 SQL 片段默认支持 & | ^ ~ &= >> 等位运算;
远程函数:新增支持从当前请求的全局对象及 Parser 全局缓存取参数值;
完善同一个请求内多种不同操作的关键词,新增支持 @post: "User", @gets: { "Privacy": "Privacy-phone" } 等简化写法;
新增对允许但容易导致潜在问题的情况在 DEBUG 下返回警告信息;
解决一个事务内有多类型数据库/多个不同数据库连接有时不能同步提交/回滚;解决特定版本的 MySQL 等部分数据库重复;
权限:解决删改不支持 String 类型主键;
更新版本号和添加 source 插件,感谢 @jarrodquan 的贡献 #610;
新增驼峰与蛇形命名互转方法以及 JSONResponse.IS_FORMAT_UNDERLINE 等配置;
全能 CRUD: "@gets": { "User":"" // 空字符串转为与 key 同名值 User },"@put": { "Moment":{} // 自动加 "tag":"Moment" },@post:"Comment[]" 自动转为 "@post":{ "Comment[]":"Comment:[]" };
主键类型相关代码全面使用泛型;
假删除:解决 notDeletetValue 未配置也会用 false 作为默认值;解决某些情况下读配置时抛异常,感谢 @cloudAndMonkey 的贡献 #603;
SQLConfig 内把所有 AbstractSQLConfig 改成 SQLConfig;
删除 @Deprecated 代码;
优化 Verifier 的注释;
doc:调整通用文档描述错误,感谢 @NIXUS 的贡献 Gitee#5 ;
用户分享文章新增 MassCMS With APIJSON最佳实践,感谢博主的热心分享,点赞支持下吧~
https://zhuanlan.zhihu.com/p/655826966
生态新增 apijson-builder: 简单包装 APIJSON,相比直接构造查询 JSON 更好记,感谢 @yeli19950109 的贡献,打开链接右上角点 ⭐Star 支持下吧~
https://github.com/yeli19950109/apijson-builder
登记企业新增 上海麦市信息科技有限公司,感谢 @gemufeng 的贡献 #616
登记企业新增 邻盛科技(武汉)有限公司,感谢 @Ivan 的贡献 Gitee#6
Published by TommyLemon about 1 year ago
PUT 新增支持对 JSONObject {} 格式的字段值传 "key+": [{"key":value}] 新增,传 "key-": ["key"] 移除;
请求操作符新增支持监听事件 IF: { "name": { UPDATE:{ "Comment": {"userName@": "User/name" } } } },方便同步修改其它表字段值等,并支持执行自定义脚本代码;
新增支持在 @column: value 中传自定义表名,例如 Comment.toId, Moment.userId 等;
最外层返回当前时间戳毫秒值,方便前后端同步校准时间等场景;
对存储过程单独传自定义的 数据库名/模式名 时支持横杠,例如可写为 @key():"api-json
.function(arg)",反引号可去掉;
新增支持子查询对象内省略关键词 from,自动取最上方的表对象 key 作为 from;
远程函数:新增根据路径从当前对象取值的方法 getArgVal(String),方便 Long uid = getArgVal("User/id") 这样取值;
AbstractSQLConfig 新增 IGNORE_BLANK_STRING_METHOD_LIST 支持对指定的方法忽略空字符串作为条件值或写入值等;
优化假删除,支持 notDeletedValue,适配 deletedTime = NULL 表示未删除等需求;
完善用异常转换状态码 code;
对 SQLConfig 传入 Parser, ObjectParser, version, tag 等,拿到上下文信息来实现某些需求;
开放请求 GET, HEAD 也处理 version 和 tag,解决字段插件配置不能根据版本号生效等问题;
SQLConfig 和 SQLExecutor 也指定主键泛型;
自动校验参数:解决自定义代码包含 ":" 冒号时可能误判不是语言名称的字符串,导致报错找不到执行引擎;
调整有问题的方法命名 onJoinComplextRelation 为 onJoinComplexRelation;
优化代码及注释的格式;
Complete Doc-English for global keyword description, thx to @YqxLzx #585;
Update README-English.md, fix typo, update company logos;
新增对腾讯分布式数据库 TDSQL, TencentDB 的支持说明;
在线体验 调整为 测试用例;
新增上市公司飞企互联的凌云中台官网 "APIJSON 使用介绍" 的链接;
http://api.flyrise.cn:9099/docs/open-docs//1459
GitHub 15.5K Star 在 400W Java 项目排名前 100,远超 FLAG, BAT 等国内外绝大部分开源项目;
APIJSONBoot 约一下午 相当于 SSMH 大小周过半个月,开发效率提升 26 倍;
https://github.com/Tencent/APIJSON#%E4%B8%BA%E4%BB%80%E4%B9%88%E9%80%89%E6%8B%A9-apijson
统计分析新增 Apple 苹果公司,更新分析截屏让 Google 谷歌公司更显眼
https://github.com/Tencent/APIJSON#%E7%BB%9F%E8%AE%A1%E5%88%86%E6%9E%90
使用登记新增 IOTOS 公司的 logo,感谢 @andy19055 的登记;
https://github.com/Tencent/APIJSON#%E4%BD%BF%E7%94%A8%E7%99%BB%E8%AE%B0
生态新增低代码 ERP 项目 xyerp,感谢 yinjg1997 的贡献
https://gitee.com/yinjg1997/xyerp
生态新增快速构建 APIJSON 查询条件的插件,感谢 mingbaobaba 的贡献
https://gitee.com/mingbaobaba/apijson-query-spring-boot-starter
生态新增基于 APIJSON 的低代码系统等,感谢 @csx-bill 的贡献
https://github.com/csx-bill/quick-boot
调整微软工程师接入 IBM DB2 的 Demo,感谢 @andream7 的贡献
https://github.com/andream7/apijson-db2
创作不易,打开链接右上角点 ⭐️ Star 支持下热心的作者们吧~
🏆 零代码、全功能、强安全 ORM 库 🚀
后端接口和文档零代码,前端(客户端) 定制返回 JSON 的数据和结构
https://github.com/Tencent/APIJSON
Published by TommyLemon over 1 year ago
新增支持 云数据仓库 Snowflake, 大数据湖仓一体平台 Databricks, 分布式 NoSQL 数据库 Cassandra;
支持验证是否存在的联合校验,感谢 @aninZz 的贡献 #503;
@combine 模板支持默认值,感谢 @cloudAndMonkey 的贡献 #519;
完善常用场景的正则校验规则,感谢 @leomiaomiao 的贡献 #505;
新增 ENABLE_WITH_AS 和 isWithAsEnable(),不启用 WITH AS 时去除多余的 SELECT * FROM(...) 包装;
Added support for hyphen(-) under email regex, thx to @hiteshbedre #543;
修复多表 gets bug、别名从代码解析改为数据库配置、支持 sql@ UPDATE/DELETE,感谢 @cloudAndMonkey 的贡献 #551;
解决多表插入报错,感谢 @wahowaho 的贡献 #545;
解决 增删改、WITH AS 子查询 因预编译参数重复添加导致报错;
优化 crud method 判断逻辑,删除无用代码,感谢 @cloudAndMonkey 的贡献 #525;
优化代码;
升级版本为 6.1.0;
首页 README 新增 Snowflake, Databricks, InfluxDB, Cassandra, Kafka, Redis, Elasticsearch, Lua 的支持说明;
完善 Update 详细的说明文档.md,调整细节问题;
更正错别字,感谢 @YqxLzx 的贡献 #535;
生态项目新增 apijson-go-ui 和 apijson-go-demo,感谢 @glennliao 的贡献;
用户新增海尔、亚信安全、兴鑫互联 等上市公司和其它几家公司;
登记包括阿里云工程师在内的 4 个贡献者,感谢大家的贡献~
https://github.com/Tencent/APIJSON/blob/master/CONTRIBUTING.md
思科、麦当劳等巨头在内网链接了 APIJSON 仓库,兴鑫互联、Varite 等在招聘要求提到了 APIJSON,腾讯阿里等大厂面试时问到了 APIJSON
https://github.com/Tencent/APIJSON/labels/Popularize%20%E5%AE%A3%E4%BC%A0%2F%E6%8E%A8%E5%B9%BF%2F%E5%B8%83%E9%81%93
根据开源指南针报告,APIJSON 已经是国内顶级、国际一流的 Java 开源项目了 🎉
对比 mybatis, grpc-java, dubbo, spring-boot, spring-framework 等基本 10 年以上的国内外顶级开源项目,
APIJSON 作为比它们都年轻几年的新兴项目,6 年取得这些成就已实属难得:
https://github.com/Tencent/APIJSON/issues/518
🏆 零代码、全功能、强安全 ORM 库 🚀 后端接口和文档零代码,前端(客户端) 定制返回 JSON 的数据和结构
https://github.com/Tencent/APIJSON
Published by TommyLemon over 1 year ago
新增支持全能接口 /crud,一个请求 JSON 同时使用多种 CRUD 操作,并支持跨源事务,感谢 @cloudAndMonkey 的贡献 #481 #485;
新增支持假删除,感谢 @cloudAndMonkey 的贡献 #493;
新增支持 Elasticsearch(简称 ES), Kafka(MQ 消息队列),感谢 @cloudAndMonkey 的贡献 #487 #493;
新增支持 Lua 等各种脚本语言,感谢 @cloudAndMonkey 的贡献 #500;
PUT 和 DELETE 新增支持子查询,感谢 @cloudAndMonkey 的贡献 #481;
新增支持 SQL 中的 WITH AS 表达式,感谢 @cloudAndMonkey 的贡献 #481;
远程函数:新增支持 JavaScript 脚本,方便动态配置业务逻辑以及作为 Serveless 服务;
远程函数:新增 ENABLE_REMOTE_FUNCTION, ENABLE_SCRIPT_FUNCTION, ENABLE_VERIFY_ROLE, ENABLE_VERIFY_CONTENT 等配置;
远程函数:新增校验 Function 表中配置的 returnType;
远程函数:新增支持自动且智能解析参数值,兼容 `key`, 'value' 指定键值格式;
新增校验请求字符串长度的规则,感谢 @aninZz 的贡献 #498;
@raw 新增支持远程函数和存储过程;
存储过程:新增支持单独指定数据库名/模式名 schema;
批量新增或批量单独设置修改:新增配置允许部分子项失败;
GETS/HEADS/PUT/DELETE 不允许前端传 @combine,感谢 @cloudAndMonkey 的贡献 #494;
优化对 SQL 执行结果的 增删改查 缓存逻辑;
优化 SQLConfig.getSQL(boolean prepared) 相关代码;
简化依赖,感谢阿里云工程师 @cnscoo 的贡献 #489;
新增包括阿里云工程师在内的 8 个贡献者,特别致谢 @cloudAndMonkey 贡献全能 CRUD、Elasticsearch, WITH AS、跨库跨源事务 等
https://github.com/Tencent/APIJSON#%E8%B4%A1%E7%8C%AE%E8%80%85%E4%BB%AC
新增文章《apijson 初探》,感谢 x3d 的贡献,点赞/收藏/关注 作者来支持下 TA 吧~
https://www.cnblogs.com/x3d/p/apijson-lowcode.html
增加《APIJSON使用文档》链接,感谢 @12345ZMTHL 的贡献 #483,点赞、收藏支持下热心的作者吧~
https://juejin.cn/post/7148253873478565902
Fix typo in Document-English.md,thanks to @eltociear 's contribution #472;
Roadmap 路线图 新增需求:支持 id/userId 与其它字段同时作为增删改条件;更新假删除、WITH AS 等进度,感谢 @cloudAndMonkey, @ifooling 的贡献
https://github.com/Tencent/APIJSON/blob/master/Roadmap.md
完善提 issue 流程,引导填写必要信息;
🎉 Java 前百!Tencent/APIJSON 14.4K Star 进入 GitHub Java 语言 400W 项目中排名 Top 100,
远超国外 FLAG, 国内 BAT 等各大厂商的绝大部分开源项目!
https://github.com/search?l=Java&o=desc&p=10&q=stars%3A%3E%3D14000&s=stars&type=Repositories
Java 中文软件类项目排名前 30
https://github.com/GrowingGit/GitHub-Chinese-Top-Charts/blob/master/content/charts/overall/software/Java.md
Java 英文软件类项目排名第 63
https://github.com/GrowingGit/GitHub-English-Top-Charts/blob/main/content/charts/overall/software/Java.md
Published by TommyLemon almost 2 years ago
新增支持分布式 OLAP 与大数据 查询引擎 Presto & Trino(原名 PrestoDB 和 PrestoSQL),Demo 有 BigData 和 Presto;
远程函数:解决 key-() 优先执行结果不会作为 SQL 部分,解决非表对象中 key() 执行时机滞后于子对象;
解决 SQL JOIN 当部分 JDBC rsmd.getTableName 返回空值导致最终主表字段插到副表对象;
新增登记另一个更完善的 Go 版,感谢 @glennliao 的贡献 #456,为 apijson-go 点 Star 支持下热心的作者吧~
完善 English README 和 Document;
生态周边项目的作者:2 腾讯、1 BAT 专家、1 微软、2 字节跳动、1 神州数码工程师&Apache dubbo2js 作者 等;
前后端 关于接口的 开发、文档、联调 等 10 大痛点解析
https://github.com/Tencent/APIJSON/wiki
腾讯 IEG 数据产品开发组负责人 xinlin:
“腾讯的 APIJSON 开源方案,它可以做到零代码生成接口和文档,并且整个生成过程是自动化。当企业有元数据的时候,马上就可以获得接口”
腾讯科技 后台开发高级工程师 雷大锤:
“可以抽出时间来看apijson了,这个可以为T10做准备,也是业界很火的东西,可以提升个人影响力!”
腾讯 bodian520:
“在调试GET、POST、PUT接口时遇到了一些问题,把个人的摸索经验分享一下,希望作者能梳理下文档,方便我们更好的接入”
华为 minshiwu:
“demo工程,默认使用apijson-framework,可以做到无任何配置即可体验apijson的各种能力。”
字节跳动 qiujunlin:
“初次见到这个项目,觉得太惊艳了,眼前一亮。给我的感受是,项目大大简化了开发流程,开发效率提升了很多倍。”
百度智慧城市 lpeng:
“很兴奋的发现APIJSON很适合我们的一个开发场景,作为我们协议定义的一部分”
中兴 duyijiang:
“感谢腾讯大大提供的框架,很好用”
Alibaba 阿里巴巴飞猪前端团队也推荐了 APIJSON #461
接口全万能,前端不求人。要啥就有啥,所求即所得。
需求由它变,后端稳如山。不变应万变,上午就上线。
Published by TommyLemon about 2 years ago
新增支持国产达梦数据库 DM 7.6+,对应 Demo APIJSONBoot-MultiDataSource;
解决 JOIN 当主副表都有条件、子查询当内外查询都有条件时可能预编译值错位;
fix: 修复子查询与外查询参数顺序,感谢 @transtone 的贡献 #447;
fix: 解决数据源为Oracle时,@explain 报错问题,感谢 @ifooling 的贡献 #434;
fix: 解决数据源为Oracle时,使用自增主键,获取不到插入的主键问题,感谢 @ifooling 的贡献 #434;
优化调试信息及日志打印,解决异常栈不够精准;
完善 English README 和 Document;
新增登记 爱投斯智能技术(深圳)有限公司,感谢 @andy19055 的贡献 #452;
新增登记 上海信息出奇科技有限公司,感谢 @AwenJackson 的贡献 #450;
新增 晨讯科技web前端开发高级工程师的文章 APIJSON-零代码接口和文档 JSON 协议 与 ORM 库;
新增公众号“程序猿香蕉”的 3 篇文章,包括 APIJSON的那些事儿,感谢 @AwenJackson 的贡献 #443;
生态项目新增 SQLAuto-智能零代码自动化测试 SQL 语句执行结果的数据库工具,点 Star 支持作者吧~
优化代码格式;
主项目 APIJSON 的贡献者们(6 个腾讯工程师、1 个微软工程师、1 个知乎基础研发架构师、1 个字节跳动工程师、1 个网易工程师、1 个 Zoom 工程师、1 个圆通工程师、1 个智联招聘工程师、1 个美国加州大学学生、3 个 SUSTech 学生等):
https://github.com/Tencent/APIJSON/blob/master/CONTRIBUTING.md
生态周边项目的作者们(2 个腾讯工程师、1 个 BAT 技术专家、1 个微软工程师、2 个字节跳动工程师、1 个神州数码工程师&Apache dubbo2js 作者 等):
https://github.com/search?o=desc&q=apijson&s=stars&type=Repositories
https://search.gitee.com/?skin=rec&type=repository&q=apijson&sort=stars_count
感谢大家的贡献。
国内腾讯、华为、阿里巴巴、美团、字节跳动、百度、京东、网易、快手等 和 国外 Google, Microsoft, Amazon, Paypal, IBM, Shopee 等
数百名知名大厂员工点了 Star,也有腾讯、华为、字节跳动、Microsoft、Zoom 等不少知名大厂员工提了 PR/Issue,非常感谢大家的支持~
Published by TommyLemon about 2 years ago
新增支持物联网时序数据库 TDengine,对应 Demo APIJSONBoot-MultiDataSource;
新增对 Year, Month, DayOfWeek 的支持;
完善数据库版本判断,兼容 MySQL 8.0 以上和以下版本,适配正则匹配、窗口函数等;
解决 APP JOIN 一对多时子数组长度超过预设范围;
fix: sql join缓存丢失而出现1+N查询问题,感谢用户 架构 - Jar @github291406933 再次贡献 #417;
大幅提升 APP JOIN 一对多时子数组查询和缓存性能;
优化 Join.isOne2Many 判断性能;
优化一对多 APP JOIN 的缓存逻辑;
记录 SQL JOIN 副表的聚合函数结果和之前不一致问题;
doc: 修改文档错别字'借口'为'接口' issue #420,感谢 @Finkyky 的贡献 #421;
修改 APIJSON初期构思及实现.pages 中的错别字;
用户:腾讯外有华为、华能、百度、快手、中兴、圆通、传音等;
如果你 提 PR 登记了自己使用 APIJSON 的公司,可以加 企业用户支持群,作者亲自且优先答疑,
只有解答了这个群里的全部问题,才看情况解答其它群里的问题(其它群不保证解答、更不保证及时)。
如果你为 APIJSON 做出了以下任何一个贡献:
提交了 PR 且被合并、提交了优质 Issue、发表了优质文章、开发了可用的生态项目,
可以在群里发出贡献链接并附带说明,管理员将设置关注你一段时间,优先答疑解惑。
其它群一般解答顺序:贡献者 > 帮助他人的群友 > 带企业名昵称 > 带岗位名昵称 > 其他群友。
Published by TommyLemon over 2 years ago
新增支持跨层级 APP JOIN,感谢 @github291406933 的贡献 #413 ;
新增对 LocalDateTime 类型支持,感谢 @MentosL 的贡献 #394 ;
还原依赖 javax.activation,实测 JDK 11, 13 都需要;
修复多字段参与 JOIN 时,没有命中缓存而出现的 1+N 查询性能问题,感谢 @github291406933 的贡献 #403 ;
完善对 APP JOIN 的 SQL 执行与缓存次数统计;
解决 @combine:"(a | b) & (c | d)" 这种任意条件组合情况下有时预编译值错位导致 SQL 报错;
解决 APP JOIN 副表返回内部字段 @RAW@LIST;
升级 fastjson 版本至 1.2.83;
相关推荐新增 腾讯业务百万数据 6s 响应,APIJSON 性能优化背后的故事;
数量级 | 4.7.0(5次取平均值) | 4.8.0(5次取平均值) | 是否正常回包 | where条件 | 性能提升 |
---|---|---|---|---|---|
10W | 1.739s | 1.159s | 是 | 无 | 50%。即((1/1.159-1/1.739)/(1/1.739))*100% |
20W | 3.518s | 2.676s | 是 | 无 | 31.5% |
50W | 9.257s | 6.952s | 是 | 无 | 33.2% |
80W | 16.236s | 10.697s | -Xmx=3192M时无法正常回包,OOM错误,调大-Xmx参数后ok。 | 无 | 51.8% |
100W | 19.748s | 14.466s | -Xmx=3192M时无法正常回包,OOM错误,调大-Xmx参数后ok | 无 | 36.5% |
10W | 1.928s | 1.392s | 是 | "x_xid{}":[xxxx36,xxxx38],覆盖数据超过100W数据。 | 38.5% |
20W | 4.149s | 2.852s | 是 | "x_xid{}":[xxxx36,xxxx38] | 45.5% |
50W | 10.652s | 7.231s | 是 | "x_xid{}":[xxxx36,xxxx38] | 47.3% |
80W | 16.975s | 12.465s | 调整了-Xmx后正常回包 | "x_xid{}":[xxxx36,xxxx38] | 36.2% |
100W | 20.632s | 16.481s | 调整了-Xmx后正常回包 | "x_xid{}":[xxxx36,xxxx38] | 25.2% |
Published by TommyLemon over 2 years ago
请求参数校验:REFUSE 新增支持 !key 排除禁止字段,优化 MUST 和 REFUSE 处理性能;
部分常量改为可自定义静态变量;
解决 PUT 不能完整替代 json, jsonb 字段的数组值,感谢 @weiwei162 的贡献 #387;
解决 Oracle 分页获取时无法获取除第一页以外的数据,感谢 @SingleDogL 的贡献 #390;
解决高并发下生成主键冲突导致新增记录失败等;
解决关闭权限校验时 POST 请求传 userId 无效,加强对 POST 请求内字段格式的校验;
解决 format: true 在 Log.DEBUG 时也不返回 SQL、时间等调试信息;
解决 JOIN 副表返回空对象;
解决预估容量判断 NOT 条件用错逻辑 key;
优化 SQL 执行缓存;
优化角色权限、参数校验、远程函数的初始化;
优化登录报错和远程函数执行报错的提示;
优化主键泛型;
优化代码;
删除不再需要的依赖 javax.activation;
升级自身版本为 5.1.0;
更新 @combine 条件组合说明为 5.0+ 的条件任意组合格式;
更新 5.0 新增的 @having&:"...", @having:{...} 两种用法;
完善 JOIN 的类型以及 join:{...} 这种可带 ON 及功能符的写法;
完善 JOIN ON 的各种关联方式、支持多字段关联、支持其它条件的说明;
相关推荐新增 apijson在同一个接口调用中 使用远程函数写入更新时间和创建时间,感谢博主,点赞、收藏支持下博主吧~
生态项目新增 路由插件 apijson-router,对外暴露类 RESTful 接口,内部转成 APIJSON 接口执行,点 Star 支持下作者吧~
原来的 IdCallback 加了泛型 <T extends Object>,并且 Object newId(RequestMethod method, String database, String schema, String table) 改为 T newId(RequestMethod method, String database, String schema, String datasource, String table);
原来的 Callback 加了泛型 <T extends Object>,并且 SQLConfig getSQLConfig(RequestMethod method, String database, String schema, String table) 改为 SQLConfig getSQLConfig(RequestMethod method, String database, String schema, String datasource, String table);
原来的 SimpleCallback 加了泛型 <T extends Object>;
如果业务后端项目直接调用或重写了相关方法,需要对应修改;
https://github.com/Tencent/APIJSON/commit/8df36e26d7ad74f2df4df4e9ce5b29530d814141
SQLExecutor.KEY_RAW_LIST 移到 AbstractSQLExecutor,如果业务后端项目直接引用了这个常量,需要对应修改;
原来的缓存读写方法 putCache, removeCache, getCache, getCacheItem 中最后参数 int type 都改为了 SQLConfig config,如果业务后端项目直接调用或重写了相关方法,需要对应修改;
https://github.com/Tencent/APIJSON/commit/8df36e26d7ad74f2df4df4e9ce5b29530d814141
用于接口限流的配置参数 DEFAULT_QUERY_COUNT, MAX_QUERY_PAGE, MAX_QUERY_COUNT, MAX_UPDATE_COUNT, MAX_SQL_COUNT, MAX_OBJECT_COUNT, MAX_ARRAY_COUNT, MAX_QUERY_DEPTH 全都移到 AbstractParser,如果业务后端项目直接引用了这些常量,需要对应修改;
https://github.com/Tencent/APIJSON/commit/8df36e26d7ad74f2df4df4e9ce5b29530d814141
移除了依赖 javax.activation
https://github.com/Tencent/APIJSON/commit/95432dde2c7a1f5147f9fe2f77f5500d33c651d0
如果用 JDK 11 +,可能编译不通过或运行报错,可以在自己项目 <dependencies></dependencies> 标签内加上:
<dependency>
<groupId>javax.activation</groupId>
<artifactId>activation</artifactId>
<version>1.1.1</version>
</dependency>