ApiJson简单使用

前言

        最近在正式迭代中插入了一个大屏演示项目,因为后端开发人员任务都安排满了,而演示项目逻辑比较简单,大多是直接查表就能搞定,所以只能想办法让前端直接和数据库交互,增加开发速度。在找工具时发现了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官方网站

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/676891.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C语言学习之结构体

结构体&#xff1a; c语言---提供的一种方式&#xff0c;可以让用户自定义数据类型&#xff0c;用于处理复杂的数据类型。 struct 结构体名 { 成员表列 }; 构造一个结构体 结构体变量的引用: 方法: 结构体变量名.成员名 . 结构体成员运算符 //表示 从属关系 s.name //表…

MySQL-权限管理(二)

一 host中的含义 /usr/local/mysql/bin/mysql -pLXYlxy2:024.#8u} -S /data/mysql/tmp/mysqld.sock select user,host,authentication_string from mysql.user; %:主要允许从任何主机连接到MySQL服务器&#xff0c;即外部连接localhost: 代表只允许本地主机连接到MySQL服务器&…

SpringBoot——整合Servlet的三大组件:过滤器(Filter)

目录 过滤器 一、用过滤器检查用户是否登录 LoginFilter自定义过滤器 FilterConfig配置类 FilterController控制器 SpringbootFilterApplication启动类 二、用过滤器统计资源访问量 LoginFilter FilterController 在开发SpringBoot项目时&#xff0c;开发人员经常需…

使用Obfuscar 混淆WPF(Net6)程序

Obfuscar 是.Net 程序集的基本混淆器&#xff0c;它使用大量的重载将.Net程序集中的元数据&#xff08;方法&#xff0c;属性、事件、字段、类型和命名空间的名称&#xff09;重命名为最小集。详细使用方式参见&#xff1a;Obfuscar 在NetFramework框架进行的WPF程序的混淆比较…

乡村振兴的乡村旅游品质提升:提升乡村旅游服务质量,打造乡村旅游品牌,增强乡村旅游吸引力,打造具有旅游特色的美丽乡村

目录 一、引言 二、提升乡村旅游服务质量 1、完善基础设施建设 2、提升服务人员素质 3、规范服务流程 三、打造乡村旅游品牌 1、挖掘乡村文化特色 2、打造特色旅游产品 3、加强品牌宣传和推广 四、增强乡村旅游吸引力 1、创新旅游体验方式 2、打造旅游精品线路 3、…

【NOI】C++程序结构入门之循环结构二-for循环

文章目录 前言一、for循环1.导入2.语法3.使用场景4.条件控制5.小结 二、例题讲解问题&#xff1a;1264 - 4位反序数问题&#xff1a;1085 - 寻找雷劈数问题&#xff1a;1057 - 能被5整除且至少有一位数字是5的所有整数的个数问题&#xff1a;1392 - 回文偶数&#xff1f;问题&a…

Windows下设置pip代理(proxy)

使用场景 正常网络情况下我们安装如果比较多的python包时&#xff0c;会选择使用这种 pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple --trusted-hostpypi.tuna.tsinghua.edu.cn 国内的镜像来加快下载速度。 但是&#xff0c;当这台被限制上…

Python 图书馆管理系统(MySQL数据库) 有GUI界面 【含Python源码 MX_032期】

使用python3&#xff0c;PyQt5&#xff0c;MySQL数据库搭建 主要功能&#xff1a; 用户注册、登录、修改密码、用户管理存储图书信息、采购增加和淘汰删除功能、租借功能实现图书采购、淘汰、租借功能。实现查询图书信息、采购和淘汰、库存、和租借情况实现统计图书的采购、库…

【FPGA】Verilog:全加器与半加器 | Full Adder | Half Adder

0x00 全加器(Full Adder) 值的加法运算逻辑电路,全加器不仅可以包括输入值,还可以将进位值纳入加法运算,是实现各种运算电路的基本运算电路。输出由 sum (S) 和 carry (C) 组成,加法运算中产生的进位称为 carry out ,从前一位传递过来并需纳入当前位加法运算的进位称为…

ElasticSearch学习笔记之一:介绍及EFK部署

1. 系统概述 The Elastic Stack&#xff0c;包括Elasticsearch、Kibana、Beats和Logstash&#xff08;也成为ELK Stack&#xff09; Elasticsearch&#xff1a;简称ES&#xff0c;是一个开源的高扩展的分布式全文搜索引擎&#xff0c;是整个Elastic Stack技术栈的核心。它可以…

【C++修行之道】类和对象(三)拷贝构造函数

目录 一、 概念 二、特征 正确的拷贝构造函数写法&#xff1a; 拷贝函数的另一种写法 三、若未显式定义&#xff0c;编译器会生成默认的拷贝构造函数。 四、编译器生成的默认拷贝构造函数已经可以完成字节序的值拷贝了&#xff0c;还需要自己显式实现吗&#xff1f; 深拷…

项目资源管理

目录 1.概述 2.六个过程 2.1. 规划资源管理 2.2. 估算活动资源 2.3. 获取资源 2.4. 建设团队 2.5. 管理团队 2.6. 控制资源 3.应用场景 3.1.十个应用场景 3.2.软件开发项目 3.2.1. 资源规划 3.2.2. 资源分配 3.2.3. 资源获取 3.2.4. 资源优化 3.2.5. 资源监控与…

YOLOv10(4):损失(Loss)计算及其检测模型代码部分阅读

YOLOv10&#xff08;1&#xff09;&#xff1a;初探&#xff0c;训练自己的数据_yolov10 训练-CSDN博客 YOLOv10&#xff08;2&#xff09;&#xff1a;网络结构及其检测模型代码部分阅读-CSDN博客 目录 1. 写在前面 2. 双标签分配 3. 计算Loss的预备条件 &#xff08;1&a…

OpenCV-最小外接圆cv::minEnclosingCircle

作者&#xff1a;翟天保Steven 版权声明&#xff1a;著作权归作者所有&#xff0c;商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处 函数原型 void minEnclosingCircle(InputArray points, Point2f& center, float& radius); 参数说明 InputArray类型的…

Codeforces Round 950 (Div. 3) 个人题解 (A~F1)

Codeforces Round 950 (Div. 3)个人题解(A~F1) 题解火车头 #define _CRT_SECURE_NO_WARNINGS 1#include <iostream> #include <vector> #include <algorithm> #include <set> #include <unordered_map> #include <cstring> #include <…

聚观早报 | 东风奕派eπ008将上市;苹果Vision Pro发布会

聚观早报每日整理最值得关注的行业重点事件&#xff0c;帮助大家及时了解最新行业动态&#xff0c;每日读报&#xff0c;就读聚观365资讯简报。 整理丨Cutie 6月3日消息 东风奕派eπ008将上市 苹果Vision Pro发布会 特斯拉Model 3高性能版开售 小米14推送全新澎湃OS系统 …

ubuntu中彻底删除mysql (配置文件删除可选)

ubuntu中彻底删除mysql (配置文件删除可选) 对于此类即搜即用的分享文章&#xff0c;也不过多赘述&#xff0c;直接依次按照下面的操作执行即可&#xff1a; 一、删除 mysql 数据文件 sudo rm /var/lib/mysql/ -R二、删除 mysql 配置文件 sudo rm /etc/mysql/ -R三、查看 m…

基于 Spring Boot 博客系统开发(十三)

基于 Spring Boot 博客系统开发&#xff08;十三&#xff09; 本系统是简易的个人博客系统开发&#xff0c;为了更加熟练地掌握 SprIng Boot 框架及相关技术的使用。&#x1f33f;&#x1f33f;&#x1f33f; 基于 Spring Boot 博客系统开发&#xff08;十二&#xff09;&…

号称超级增程电动,领克07EM-P带来技术变革?

近年来&#xff0c;自主品牌在新能源汽车领域百花齐放&#xff0c;尤其是在混合动力市场上&#xff0c;比亚迪的DM-i技术引领了风潮&#xff0c;秦L的一经亮相&#xff0c;整个车圈都沸腾了&#xff0c;“超级混动”的概念深入人心。 各大自主品牌都有了自己的混动平台和技术。…

前端加载,渲染十万条数据(性能优化)

1.场景 项目中某个弹窗展示设备信息卡片,返回的设备信息很多,页面样式有很花哨,导致渲染极其缓慢 f12,查看性能,这里可以看到页面加载在哪一步分耗时最长,针对性进行优化(图为举例) 2.解决思路 采用虚拟列表的方式,滚动时,dom元素数量不变,只改变展示的数据 结构描述: 父盒…