APIJSON教程:上手apijson项目,学习apijson语法,并实现持久层配置

2024-04-21 07:38

本文主要是介绍APIJSON教程:上手apijson项目,学习apijson语法,并实现持久层配置,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 一、项目导入
  • 二、数据库搭建及配置
  • 三、运行项目并访问接口
  • 四、apijson语法
    • 1.查询
    • 2.插入数据
    • 3.修改数据
    • 4.删除数据
    • 5.登录
  • 五、如何新增接口
  • 六、大坑
    • 1.id

最近因搬砖需要看这个,用来简化持久层,所以学了一下,写了个教程,还是比较容易上手的。


官方文档:点击跳转


  • 开发工具:IDEA
  • jdk:1.8
  • 数据库:mysql
  • 测试网站:http://apijson.cn/api/

更多测试用例:

登陆后,点击这个图标:

在这里插入图片描述


一、项目导入

下载大文件夹:APIJSON-Demo

下载好后,在IDEA中导入APIJSON-Demo/APIJSON-Java-Server/APIJSONDemo,并在application.yml中做如下配置:

server:
#  端口号port: 8086tomcat:uri-encoding: utf-8
#      tomcat header最大缓冲max-http-header-size: 8192

二、数据库搭建及配置

在项目中新建一个文件夹sql用来装数据库测试数据,然后把APIJSON-Demo/MYSQL/single目录中的sql文件复制过来:

在这里插入图片描述

然后下面来改一下数据库的相关配置

首先在navicat for mysql中建立好数据库apijson:

在这里插入图片描述

然后需要修改下DemoSQLConfig类中的代码:

首先是static块中的:

DEFAULT_DATABASE = DATABASE_MYSQL;  // TODO 默认数据库类型,改成你自己的
DEFAULT_SCHEMA = "apijson";  // TODO 数据库名

然后是数据库版本号:

@Override
public String getDBVersion() {return "8.0.23";  // TODO 改成你自己的 MySQL 或 PostgreSQL 数据库版本号 
}

以及数据库的相关信息:

@JSONField(serialize = false)  // 不在日志打印 账号/密码 等敏感信息
@Override
public String getDBUri() {return "jdbc:mysql://localhost:3306"; // TODO 改成你自己的,TiDB 可以当成 MySQL 使用,默认端口为 4000
}@JSONField(serialize = false)  // 不在日志打印 账号/密码 等敏感信息
@Override
public String getDBAccount() {return "root";  // TODO 改成你自己的
}@JSONField(serialize = false)  // 不在日志打印 账号/密码 等敏感信息
@Override
public String getDBPassword() {return "密码";  // TODO 改成你自己的,TiDB 可以当成 MySQL 使用, 默认密码为空字符串 ""
}

接下来是搭建数据库

先连接上数据库:

在这里插入图片描述

连接好后选中所有sql文件,然后右键运行:

在这里插入图片描述

运行完后数据库中就有数据了:

在这里插入图片描述

三、运行项目并访问接口

在这里插入图片描述

运行好后,去apijson.org/auto/这个网站调一下接口试试(别的网站或插件也可以):

在这里插入图片描述

发送请求后如果没有问题右边会显示数据:

在这里插入图片描述

四、apijson语法

项目跑通后,我们来学习下apijson的语法,实现更加强大的增删改查功能。

注意: 表名首字母要大写,这可以在access表中进行配置。

1.查询

字段过滤

在这里插入图片描述

字段别名

在这里插入图片描述

显示多个结果

在这里插入图片描述
逻辑运算

查询userId在82002,82003中的。数据默认显示第一页,每页10条,怎么设置后面会讲:

在这里插入图片描述

查询userId>=82003并且<=82006的:

{"[]": {"Comment": {"userId&{}": ">=82003,<=82006","@column": "id,userId:user,content:cont"}}
}

查询userId>=82003或<=82006的:

{"[]": {"Comment": {"userId|{}": ">=82003,<=82006","@column": "id,userId:user,content:cont"}}
}

查询userId不在范围内的:

{"[]": {"Comment": {"userId!{}": [82003,82006],"@column": "id,userId:user,content:cont"}}
}

可以组合多条逻辑查询条件:

{"[]": {"Comment": {"userId!{}": [82003,82006],"userId&{}": ">=82000,<=82002","@column": "id,userId:user,content:cont"}}
}

模糊查询

{"[]": {"Comment": {"content$":"%eave%","@column": "id,content:cont"}}
}

正则匹配

这部分比较繁琐,用的时候直接查资料,参考资料:

在这里插入图片描述

分页

page表示当前页数,count表示每页显示的记录条数:

{"[]": {"Comment": {"userId{}":[82002,82003,82003],"@column": "id,userId:user,content:cont"},"page":0,"count":5}
}

下面令query为1,表示查询数据总条数:

{"[]": {"Comment": {"@column": "id,userId:user,content:cont"},"query": 1},"total@": "/[]/total"
}

排序

date-表示按date降序排序,id+表示升序,momentId没写符号默认是升序:

{"[]": {"Comment": {"@column": "id,date,momentId,content:cont","@order": "date-,id+,momentId"}}
}

关联查询

{"[]": {"Moment": {"@column": "id,date,userId","id": 12},"User": {"id@": "/Moment/userId","@column": "id,name"}}
}

查询结果如下:

在这里插入图片描述

函数

apijson支持的函数:

在这里插入图片描述

@column后面使用了函数后只能写一列,写多列会报错,还没搞明白为什么:

{"[]": {"Comment": {"userId&{}": ">=80000,<=82006","@column": "max(id):maxid"}}
}

分组

{"[]": {"Comment": {"userId&{}": ">=80000,<=82006","@column": "userId:user","@group": "userId"}}
}

2.插入数据

首先要确定DemoController类中已经写好了相应的插入数据方法。

apijson插入语法如下:

{"Moment": {"content": "今天天气不错,到处都是提拉米苏雪","userId": 38710,"id": 16,"date": "2017-02-08 16:06:11","praiseUserIdList": "[70793, 93793, 82044, 82040, 82055, 90814, 38710, 82002, 82006, 1508072105320, 82001]"},"tag": "Moment"
}

成功页面:

在这里插入图片描述

3.修改数据

和插入数据语法一样:

{"Moment": {"content": "修改:今天天气不错,到处都是提拉米苏雪","userId": 38710,"id": 12,"date": "2017-02-08 16:06:11","praiseUserIdList": "[70793, 93793, 82044, 82040, 82055, 90814, 38710, 82002, 82006, 1508072105320, 82001]"},"tag": "Moment"
}

对json类型数据进行修改:加号代表添加元素,减号代表删除元素:

{"Moment":{"id":1544520921923,"praiseUserIdList+": [123]},"tag":"Moment"
}

4.删除数据

{"Moment": {"id": 12},"tag": "Moment"
}

5.登录

关于这部分还没搞懂,先在这里占个坑

五、如何新增接口

先在数据库里新增一张表:

在这里插入图片描述

运行项目,就能查询接口了:

在这里插入图片描述

六、大坑

1.id

每张数据库表的主键必须命名为id,不然会报错,做项目的时候这个bug卡了我一天我才发现原来是这样,服了!

这篇关于APIJSON教程:上手apijson项目,学习apijson语法,并实现持久层配置的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/922518

相关文章

使用Redis快速实现共享Session登录的详细步骤

《使用Redis快速实现共享Session登录的详细步骤》在Web开发中,Session通常用于存储用户的会话信息,允许用户在多个页面之间保持登录状态,Redis是一个开源的高性能键值数据库,广泛用于... 目录前言实现原理:步骤:使用Redis实现共享Session登录1. 引入Redis依赖2. 配置R

SpringBoot实现RSA+AES自动接口解密的实战指南

《SpringBoot实现RSA+AES自动接口解密的实战指南》在当今数据泄露频发的网络环境中,接口安全已成为开发者不可忽视的核心议题,RSA+AES混合加密方案因其安全性高、性能优越而被广泛采用,本... 目录一、项目依赖与环境准备1.1 Maven依赖配置1.2 密钥生成与配置二、加密工具类实现2.1

Oracle迁移PostgreSQL隐式类型转换配置指南

《Oracle迁移PostgreSQL隐式类型转换配置指南》Oracle迁移PostgreSQL时因类型差异易引发错误,需通过显式/隐式类型转换、转换关系管理及冲突处理解决,并配合验证测试确保数据一致... 目录一、问题背景二、解决方案1. 显式类型转换2. 隐式转换配置三、维护操作1. 转换关系管理2.

在Java中实现线程之间的数据共享的几种方式总结

《在Java中实现线程之间的数据共享的几种方式总结》在Java中实现线程间数据共享是并发编程的核心需求,但需要谨慎处理同步问题以避免竞态条件,本文通过代码示例给大家介绍了几种主要实现方式及其最佳实践,... 目录1. 共享变量与同步机制2. 轻量级通信机制3. 线程安全容器4. 线程局部变量(ThreadL

python使用Akshare与Streamlit实现股票估值分析教程(图文代码)

《python使用Akshare与Streamlit实现股票估值分析教程(图文代码)》入职测试中的一道题,要求:从Akshare下载某一个股票近十年的财务报表包括,资产负债表,利润表,现金流量表,保存... 目录一、前言二、核心知识点梳理1、Akshare数据获取2、Pandas数据处理3、Matplotl

IDEA中配置Tomcat全过程

《IDEA中配置Tomcat全过程》文章介绍了在IDEA中配置Tomcat的六步流程,包括添加服务器、配置部署选项、设置应用服务器及启动,并提及Maven依赖可能因约定大于配置导致问题,需检查依赖版本... 目录第一步第二步第三步第四步第五步第六步总结第一步选择这个方框第二步选择+号,找到Tomca

分布式锁在Spring Boot应用中的实现过程

《分布式锁在SpringBoot应用中的实现过程》文章介绍在SpringBoot中通过自定义Lock注解、LockAspect切面和RedisLockUtils工具类实现分布式锁,确保多实例并发操作... 目录Lock注解LockASPect切面RedisLockUtils工具类总结在现代微服务架构中,分布

Java使用Thumbnailator库实现图片处理与压缩功能

《Java使用Thumbnailator库实现图片处理与压缩功能》Thumbnailator是高性能Java图像处理库,支持缩放、旋转、水印添加、裁剪及格式转换,提供易用API和性能优化,适合Web应... 目录1. 图片处理库Thumbnailator介绍2. 基本和指定大小图片缩放功能2.1 图片缩放的

Win10安装Maven与环境变量配置过程

《Win10安装Maven与环境变量配置过程》本文介绍Maven的安装与配置方法,涵盖下载、环境变量设置、本地仓库及镜像配置,指导如何在IDEA中正确配置Maven,适用于Java及其他语言项目的构建... 目录Maven 是什么?一、下载二、安装三、配置环境四、验证测试五、配置本地仓库六、配置国内镜像地址

精选20个好玩又实用的的Python实战项目(有图文代码)

《精选20个好玩又实用的的Python实战项目(有图文代码)》文章介绍了20个实用Python项目,涵盖游戏开发、工具应用、图像处理、机器学习等,使用Tkinter、PIL、OpenCV、Kivy等库... 目录① 猜字游戏② 闹钟③ 骰子模拟器④ 二维码⑤ 语言检测⑥ 加密和解密⑦ URL缩短⑧ 音乐播放