@
no1xsyzy @
nutting @
visonme Hibernate 这种对于稍微复杂一点的关联查询写法都比较麻烦,代码不够直观,一般非单表的 CRUD 确实不如手写 SQL。
APIJSON Star 已经超过它了,并且对于简单的 CRUD、比较复杂但不是非常复杂的查询 就支持得很好,非常直观:
{
"[]": {
"count": 5,
"join": "&/User/id@,</Comment/momentId@",
"Moment": {},
"User": {
"id@": "/Moment/userId",
"@column": "id,name"
},
"Comment": {
"momentId@": "/Moment/id"
}
}
}
会自动解析为
SELECT `Moment`.*,`User`.`id`,`User`.`name`,`Comment`.* FROM `Moment`
INNER JOIN `User` ON `User`.`id` = `Moment`.`userId`
LEFT JOIN `Comment` ON `Comment`.`momentId` = `Moment`.`id`
LIMIT 5 OFFSET 0
APIJSON 目前已实现:
大体功能:增删改查、分页查询、统计与验证、注册登录、模糊搜索、结构校验、角色及操作权限校验、数据保护、远程函数调用等
操作方式:增、删、改、查、调用远程函数
操作对象:单个对象、可关联的多个对象、数组等
请求方法:GET,HEAD,GETS,HEADS,POST,PUT,DELETE
请求结构:{Table:{...}}、{Table0:{...},Table1{...},Table2:{...}...}、{"[]":{Table:{...}}}、{"[]":{Table0:{...},Table1{...},"Array0[]":{...},...}}等各种组合和嵌套
返回结构:对应请求结构的各种 JSON 结构。
功能符号:
"key[]":{} // 查询数组
"key{}":[] // 匹配选项范围
"key{}":"<=10;length(key)>1..." // 匹配条件范围
"key()":"function(arg0,arg1...)" // 远程调用函数
"key@":"key0/key1.../targetKey" // 引用赋值
"key$":"%abc%" // 模糊搜索
"key~":"^[0-9]+$" // 正则匹配
"key%":"2018-01-01,2018-10-01" // 连续范围
"key+":[1] // 增加 /扩展
"key-":888.88 // 减少 /去除
"name:alias" // 新建别名
"@column":"id,sex,name" // 返回字段
"@group":"userId" // 分组方式
"@having":"max(id)>=100" // 聚合函数
"@order":"date-,name+" // 排序方式
"@schema":"sys" // 集合空间
"@database":"PostgreSQL" // 跨数据库
"@role":"LOGIN" // 访问角色
详细说明见通用文档中的 [功能符](
https://github.com/TommyLemon/APIJSON/blob/master/Document.md#3.2)
创作不易,GitHub 右上角点 Star 支持下吧 ^_^