Skip to content

提升可扩展性;解决 bug;优化功能和代码;完善文档等

Compare
Choose a tag to compare
@TommyLemon TommyLemon released this 03 May 18:38
· 447 commits to master since this release

功能

请求参数校验: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 支持下作者吧~

兼容性

AbastractSQLConfig 中

原来的 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>;
如果业务后端项目直接调用或重写了相关方法,需要对应修改;
8df36e2

AbstractSQLExecutor 中

SQLExecutor.KEY_RAW_LIST 移到 AbstractSQLExecutor,如果业务后端项目直接引用了这个常量,需要对应修改;
原来的缓存读写方法 putCache, removeCache, getCache, getCacheItem 中最后参数 int type 都改为了 SQLConfig config,如果业务后端项目直接调用或重写了相关方法,需要对应修改;
8df36e2

Parser 中

用于接口限流的配置参数 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,如果业务后端项目直接引用了这些常量,需要对应修改;
8df36e2

pom.xml 中

移除了依赖 javax.activation
95432dd
如果用 JDK 11 +,可能编译不通过或运行报错,可以在自己项目 <dependencies></dependencies> 标签内加上:

		<dependency>
			<groupId>javax.activation</groupId>
			<artifactId>activation</artifactId>
			<version>1.1.1</version>
		</dependency>