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

相关文章

Linux下进程的CPU配置与线程绑定过程

《Linux下进程的CPU配置与线程绑定过程》本文介绍Linux系统中基于进程和线程的CPU配置方法,通过taskset命令和pthread库调整亲和力,将进程/线程绑定到特定CPU核心以优化资源分配... 目录1 基于进程的CPU配置1.1 对CPU亲和力的配置1.2 绑定进程到指定CPU核上运行2 基于

MySQL 多列 IN 查询之语法、性能与实战技巧(最新整理)

《MySQL多列IN查询之语法、性能与实战技巧(最新整理)》本文详解MySQL多列IN查询,对比传统OR写法,强调其简洁高效,适合批量匹配复合键,通过联合索引、分批次优化提升性能,兼容多种数据库... 目录一、基础语法:多列 IN 的两种写法1. 直接值列表2. 子查询二、对比传统 OR 的写法三、性能分析

Linux下删除乱码文件和目录的实现方式

《Linux下删除乱码文件和目录的实现方式》:本文主要介绍Linux下删除乱码文件和目录的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux下删除乱码文件和目录方法1方法2总结Linux下删除乱码文件和目录方法1使用ls -i命令找到文件或目录

Spring Boot spring-boot-maven-plugin 参数配置详解(最新推荐)

《SpringBootspring-boot-maven-plugin参数配置详解(最新推荐)》文章介绍了SpringBootMaven插件的5个核心目标(repackage、run、start... 目录一 spring-boot-maven-plugin 插件的5个Goals二 应用场景1 重新打包应用

SpringBoot+EasyExcel实现自定义复杂样式导入导出

《SpringBoot+EasyExcel实现自定义复杂样式导入导出》这篇文章主要为大家详细介绍了SpringBoot如何结果EasyExcel实现自定义复杂样式导入导出功能,文中的示例代码讲解详细,... 目录安装处理自定义导出复杂场景1、列不固定,动态列2、动态下拉3、自定义锁定行/列,添加密码4、合并

mybatis执行insert返回id实现详解

《mybatis执行insert返回id实现详解》MyBatis插入操作默认返回受影响行数,需通过useGeneratedKeys+keyProperty或selectKey获取主键ID,确保主键为自... 目录 两种方式获取自增 ID:1. ​​useGeneratedKeys+keyProperty(推

Spring Boot集成Druid实现数据源管理与监控的详细步骤

《SpringBoot集成Druid实现数据源管理与监控的详细步骤》本文介绍如何在SpringBoot项目中集成Druid数据库连接池,包括环境搭建、Maven依赖配置、SpringBoot配置文件... 目录1. 引言1.1 环境准备1.2 Druid介绍2. 配置Druid连接池3. 查看Druid监控

Linux在线解压jar包的实现方式

《Linux在线解压jar包的实现方式》:本文主要介绍Linux在线解压jar包的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux在线解压jar包解压 jar包的步骤总结Linux在线解压jar包在 Centos 中解压 jar 包可以使用 u

Java中读取YAML文件配置信息常见问题及解决方法

《Java中读取YAML文件配置信息常见问题及解决方法》:本文主要介绍Java中读取YAML文件配置信息常见问题及解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要... 目录1 使用Spring Boot的@ConfigurationProperties2. 使用@Valu

Jenkins分布式集群配置方式

《Jenkins分布式集群配置方式》:本文主要介绍Jenkins分布式集群配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1.安装jenkins2.配置集群总结Jenkins是一个开源项目,它提供了一个容易使用的持续集成系统,并且提供了大量的plugin满