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

相关文章

使用Java解析JSON数据并提取特定字段的实现步骤(以提取mailNo为例)

《使用Java解析JSON数据并提取特定字段的实现步骤(以提取mailNo为例)》在现代软件开发中,处理JSON数据是一项非常常见的任务,无论是从API接口获取数据,还是将数据存储为JSON格式,解析... 目录1. 背景介绍1.1 jsON简介1.2 实际案例2. 准备工作2.1 环境搭建2.1.1 添加

Java实现任务管理器性能网络监控数据的方法详解

《Java实现任务管理器性能网络监控数据的方法详解》在现代操作系统中,任务管理器是一个非常重要的工具,用于监控和管理计算机的运行状态,包括CPU使用率、内存占用等,对于开发者和系统管理员来说,了解这些... 目录引言一、背景知识二、准备工作1. Maven依赖2. Gradle依赖三、代码实现四、代码详解五

C#读取本地网络配置信息全攻略分享

《C#读取本地网络配置信息全攻略分享》在当今数字化时代,网络已深度融入我们生活与工作的方方面面,对于软件开发而言,掌握本地计算机的网络配置信息显得尤为关键,而在C#编程的世界里,我们又该如何巧妙地读取... 目录一、引言二、C# 读取本地网络配置信息的基础准备2.1 引入关键命名空间2.2 理解核心类与方法

java如何分布式锁实现和选型

《java如何分布式锁实现和选型》文章介绍了分布式锁的重要性以及在分布式系统中常见的问题和需求,它详细阐述了如何使用分布式锁来确保数据的一致性和系统的高可用性,文章还提供了基于数据库、Redis和Zo... 目录引言:分布式锁的重要性与分布式系统中的常见问题和需求分布式锁的重要性分布式系统中常见的问题和需求

SpringBoot基于MyBatis-Plus实现Lambda Query查询的示例代码

《SpringBoot基于MyBatis-Plus实现LambdaQuery查询的示例代码》MyBatis-Plus是MyBatis的增强工具,简化了数据库操作,并提高了开发效率,它提供了多种查询方... 目录引言基础环境配置依赖配置(Maven)application.yml 配置表结构设计demo_st

Redis事务与数据持久化方式

《Redis事务与数据持久化方式》该文档主要介绍了Redis事务和持久化机制,事务通过将多个命令打包执行,而持久化则通过快照(RDB)和追加式文件(AOF)两种方式将内存数据保存到磁盘,以防止数据丢失... 目录一、Redis 事务1.1 事务本质1.2 数据库事务与redis事务1.2.1 数据库事务1.

python使用watchdog实现文件资源监控

《python使用watchdog实现文件资源监控》watchdog支持跨平台文件资源监控,可以检测指定文件夹下文件及文件夹变动,下面我们来看看Python如何使用watchdog实现文件资源监控吧... python文件监控库watchdogs简介随着Python在各种应用领域中的广泛使用,其生态环境也

el-select下拉选择缓存的实现

《el-select下拉选择缓存的实现》本文主要介绍了在使用el-select实现下拉选择缓存时遇到的问题及解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的... 目录项目场景:问题描述解决方案:项目场景:从左侧列表中选取字段填入右侧下拉多选框,用户可以对右侧

最新版IDEA配置 Tomcat的详细过程

《最新版IDEA配置Tomcat的详细过程》本文介绍如何在IDEA中配置Tomcat服务器,并创建Web项目,首先检查Tomcat是否安装完成,然后在IDEA中创建Web项目并添加Web结构,接着,... 目录配置tomcat第一步,先给项目添加Web结构查看端口号配置tomcat    先检查自己的to

使用Nginx来共享文件的详细教程

《使用Nginx来共享文件的详细教程》有时我们想共享电脑上的某些文件,一个比较方便的做法是,开一个HTTP服务,指向文件所在的目录,这次我们用nginx来实现这个需求,本文将通过代码示例一步步教你使用... 在本教程中,我们将向您展示如何使用开源 Web 服务器 Nginx 设置文件共享服务器步骤 0 —