前言
最近在正式迭代中插入了一个大屏演示项目,因为后端开发人员任务都安排满了,而演示项目逻辑比较简单,大多是直接查表就能搞定,所以只能想办法让前端直接和数据库交互,增加开发速度。在找工具时发现了ApiJson。尝试使用了一下,在这里和大家做一个分享。
ApiJson介绍:
可以简单理解它是一个可以直接通过api接口调用的ORM层框架。使用基本就是将ApiJson项目部署起来,然后直接通过API调用就能进行表的读写操作。
官网地址:腾讯APIJSON官方网站
部署
step1:
进入项目的git地址,下载 APIJSONBoot。附地址:https://github.com/APIJSON/APIJSON-Demo/tree/master/APIJSON-Java-Server/APIJSONBoot
step2:
修改项目下的 DemoSQLConfig 为自己的数据库配置:
step3:
启动项目(项目本身是一个springboot项目,启动方式,部署到环境的方式,都和普通的springboot项目一样)。
使用
1. 查询
查询的接口统一为:http://localhost:端口号/get
通过不同的入参,来实现不同的查询(有点儿像es的玩法)
例如:在postman中,
uri输入:http://localhost:端口号/get
mothed:POST
请求体:
{
"Moment": {
"id": 12
}
}
就可以查询到 数据库中 Moment表中,id=12的数据
注意一个小坑,请求中的表名首字母必须是大写的,所以数据库如果大小写敏感,数据库表的首字母也需要大写。如果数据库表名是小写,则需要在 DemoSQLConfig中配置映射,将书库表名映射为首字母大写的名称才行
1)简单查询
{"Moment": { -- 表明,例如表名称为 Moment"id": 12 -- 字段名和值 ,例如,id为12}
}
2)字段过滤
{"Moment": {"id": 12,"@column": "content" -- 可以用,隔开多个列名}
}
3)查询多个数据,in语句使用
{"[]": { --- [] 代表查集合"Moment": { --- 表名"id{}": [12, 15, 32], --- id的集合。{}可以理解成 条件是一个对象"@column": "id,date,content" --- 查某几个列}}
}
4)where条件中的逻辑运算符
这段语句等价于
select id,date,content:text fromg Moment where (id between 10 and 40 ) and id not in (12)
{"[]": {"Moment": {"id&{}": ">=10,<=40","id!{}": [12],"@column": "id,date,content:text"}}
}
5) 模糊搜索
{"[]": {"Moment": {"content$": "%APIJSON%", --- 模糊搜索"@column": "id,date,content:text"}}
}
6)分页
{"[]": {"Moment": {"@column": "id,date,content,praiseUserIdList"},"page": 0,"count": 5 --- 注意,分页参数在 [] 下的一层,和表名同级}
}
7) 组合查询
selet m.id, ,.data, m.userId, u.id, u.name from Monent m left join User u on m.userId = u,id
Monent 表的 userId 和 User表的 id关联,查询数据
{"[]": {"Moment": {"@column": "id,date,userId","id": 12},"User": {"id@": "/Moment/userId","@column": "id,name"}}
}
这种查询结果和我们平时sql不太一样,稍微看一下返回结果:
{"[]": [{ ------------------ 这里开始 ---------------"Moment": { -------- 一个数据内,把moment和user分开了"date": "2017-02-08 16:06:11.0","id": 12,"userId": 70793},"User": { --------- 这是关联的user对象 ----------"id": 70793,"name": "Strong"}} ------------------这里结束 是一个数据 ---------------],"code": 200,"msg": "success"
}
8)分组及函数
这几个是apiJson支持的聚合函数
函数名 | 说明 |
---|---|
count | 统计分组下,某字段的个数 |
sum | 统计分组下,某字段的和 |
max | 统计分组下,某字段的最大值 |
min | 统计分组下,某字段的最小值 |
avg | 统计分组下,某字段的平均值 |
使用:
直接用
{"[]": {"Moment": {"@column": "max(id):maxid"}}
}
和分组一起用
{"[]": {"Sale":{"@column":"store_id;sum(amt):totAmt","@group":"store_id"}}
}
2.新增
uri改一下:http://localhost:8080/post
{"Moment": {"content": "今天天气不错,到处都是提拉米苏雪","userId": 38710},"tag": "Moment"
}
3.修改
Mothed:PUT
{"Moment": {"id": 1544520921923,"content": "海洋动物数量减少,如果非吃不可,不点杀也是在保护它们"},"tag": "Moment"
}
4.删除
Mothed:Delete
{"Moment": {"id": 1544520921923},"tag": "Moment"
}
其他
本文知识简单的记录以下apiJson的一些使用,方便大家快速启动。详细内容看官网,很详细,我的例子也都是官网摘的 腾讯APIJSON官方网站