最近在正式迭代中插入了一个大屏演示项目,因为后端开发人员任务都安排满了,而演示项目逻辑比较简单,大多是直接查表就能搞定,所以只能想办法让前端直接和数据库交互,增加开发速度。在找工具时发现了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项目一样)。
查询的接口统一为:http://localhost:端口号/get
通过不同的入参,来实现不同的查询(有点儿像es的玩法)
例如:在postman中,
uri输入:http://localhost:端口号/get
mothed:POST
请求体:
{
"Moment": {
"id": 12
}
}
就可以查询到 数据库中 Moment表中,id=12的数据
注意一个小坑,请求中的表名首字母必须是大写的,所以数据库如果大小写敏感,数据库表的首字母也需要大写。如果数据库表名是小写,则需要在 DemoSQLConfig中配置映射,将书库表名映射为首字母大写的名称才行
- {
- "Moment": { -- 表明,例如表名称为 Moment
- "id": 12 -- 字段名和值 ,例如,id为12
- }
- }
- {
- "Moment": {
- "id": 12,
- "@column": "content" -- 可以用,隔开多个列名
- }
- }
- {
- "[]": { --- [] 代表查集合
- "Moment": { --- 表名
- "id{}": [12, 15, 32], --- id的集合。{}可以理解成 条件是一个对象
- "@column": "id,date,content" --- 查某几个列
- }
- }
- }
这段语句等价于
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"
- }
- }
- }
- {
- "[]": {
- "Moment": {
- "content$": "%APIJSON%", --- 模糊搜索
- "@column": "id,date,content:text"
- }
- }
- }
- {
- "[]": {
- "Moment": {
- "@column": "id,date,content,praiseUserIdList"
- },
- "page": 0,
- "count": 5 --- 注意,分页参数在 [] 下的一层,和表名同级
- }
- }
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"
- }
这几个是apiJson支持的聚合函数
| 函数名 | 说明 |
|---|---|
| count | 统计分组下,某字段的个数 |
| sum | 统计分组下,某字段的和 |
| max | 统计分组下,某字段的最大值 |
| min | 统计分组下,某字段的最小值 |
| avg | 统计分组下,某字段的平均值 |
使用:
直接用
- {
- "[]": {
- "Moment": {
- "@column": "max(id):maxid"
- }
- }
- }
和分组一起用
- {
- "[]": {
- "Sale":{
- "@column":"store_id;sum(amt):totAmt",
- "@group":"store_id"
- }
- }
- }
uri改一下:http://localhost:8080/post
- {
- "Moment": {
- "content": "今天天气不错,到处都是提拉米苏雪",
- "userId": 38710
- },
- "tag": "Moment"
- }
Mothed:PUT
- {
- "Moment": {
- "id": 1544520921923,
- "content": "海洋动物数量减少,如果非吃不可,不点杀也是在保护它们"
- },
- "tag": "Moment"
- }
Mothed:Delete
- {
- "Moment": {
- "id": 1544520921923
- },
- "tag": "Moment"
- }
本文知识简单的记录以下apiJson的一些使用,方便大家快速启动。详细内容看官网,很详细,我的例子也都是官网摘的 腾讯APIJSON官方网站