apijson 快速上手

apijson是强大的工具,简化了CRUD的操作,只要有数据库表,就能自动生成RESTFUL接口。但初次上手也是摸索了很长时间,尤其是部署与使用上,这里尝试以初学者角度来说下:

一、好处

1、对于简单的应用,只需要建表,自动生成RESTFUL的CRUD接口,时间节省明显;
2、支持跨表、筛选等复杂的数据库查询;
3、大厂出口,品质优秀
详细的就不介绍了,可上官网查看:apijson.cn

二、快速上手

直接使用官方APIJSON-Demo。

  1. 必要条件

安装好Java和Maven (Maven设置为阿里源,这样下载包更快)。

  1. 下载示例
git clone https://github.com/APIJSON/APIJSON-Demo.git

或者

git clone https://gitee.com/APIJSON/APIJSON-Demo.git

示例中有很多项目,满足不同的使用场景。

  1. 数据库准备(Mysql为例)

进入下载好的目录,找到sys.sql文件,路径在:APIJSON-Demo/MySQL/sys.sql

使用数据库管理工具,导入sql文件并执行,会把apijson运行所需要的数据库文件建表,并提供案例。

运行后,生成如下的数据表:

在这里插入图片描述

  1. 修改java配置文件

这里使用APIJSONDemo项目 (路径在:APIJSON-Demo/APIJSON-Java-Server/APIJSONDemo ),APIJSONDemo 使用了apijson-framework,自动化更强。

配置文件主要用于设定数据库连接的参数,主机、数据库和密码。

  1. 默认是sys数据库,可以自定义,这样现有的数据库不用改动。
  2. !!! 要自动化更高(部署好后就不用修改后端代码),自己的数据表名必须是大写字母开头,列名不要是中文,不然可以返回状态码200,但取不到需要的数据。
  • 找到DEFAULT_SCHEMA ,变成自己的数据库
  • 找到 public String getDBUri() ,修改数据库主机和端口号
  • 找到 public String getDBAccount() ,修改数据库登录账号
  • 找到 public String getDBPassword() ,修改数据库登录密码

如果自己的数据表是小写,或者中文,需要在代码里单独设置一下别名 ,使用:TABLE_KEY_MAP.put()
如示例sys数据库下的表是 apijson_user,映射为大写开关的名称:
TABLE_KEY_MAP.put("User", "apijson_user");

/*Copyright ©2016 TommyLemon(https://github.com/TommyLemon/APIJSON)Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License athttp://www.apache.org/licenses/LICENSE-2.0Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.*/package apijson.demo;import com.alibaba.fastjson.annotation.JSONField;import apijson.framework.APIJSONSQLConfig;/**SQL 配置* TiDB 用法和 MySQL 一致* 具体见详细的说明文档 C.开发说明 C-1-1.修改数据库链接  * https://github.com/Tencent/APIJSON/blob/master/%E8%AF%A6%E7%BB%86%E7%9A%84%E8%AF%B4%E6%98%8E%E6%96%87%E6%A1%A3.md#c-1-1%E4%BF%AE%E6%94%B9%E6%95%B0%E6%8D%AE%E5%BA%93%E9%93%BE%E6%8E%A5* @author Lemon*/
public class DemoSQLConfig extends APIJSONSQLConfig {static {DEFAULT_DATABASE = DATABASE_MYSQL;  // TODO 默认数据库类型,改成你自己的DEFAULT_SCHEMA = "mydb";  // TODO 默认数据库名/模式,改成你自己的,默认情况是 MySQL: sys, PostgreSQL: public, SQL Server: dbo, Oracle: // 表名和数据库不一致的,需要配置映射关系。只使用 APIJSONORM 时才需要;// 如果用了 apijson-framework 且调用了 APIJSONApplication.init 则不需要// (间接调用 DemoVerifier.init 方法读取数据库 Access 表来替代手动输入配置)。// 但如果 Access 这张表的对外表名与数据库实际表名不一致,仍然需要这里注册。例如//		TABLE_KEY_MAP.put(Access.class.getSimpleName(), "access");//表名映射,隐藏真实表名,对安全要求很高的表可以这么做TABLE_KEY_MAP.put("User", "apijson_user");TABLE_KEY_MAP.put("Privacy", "apijson_privacy");}@Overridepublic String getDBVersion() {return "5.7.22";  // "8.0.11";  // TODO 改成你自己的 MySQL 或 PostgreSQL 数据库版本号  // MYSQL 8 和 7 使用的 JDBC 配置不一样}@JSONField(serialize = false)  // 不在日志打印 账号/密码 等敏感信息@Overridepublic String getDBUri() {return "jdbc:mysql://localhost:3307?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=UTF-8"; // TODO 改成你自己的,TiDB 可以当成 MySQL 使用,默认端口为 4000}@JSONField(serialize = false)  // 不在日志打印 账号/密码 等敏感信息@Overridepublic String getDBAccount() {return "myacount";  // TODO 改成你自己的}@JSONField(serialize = false)  // 不在日志打印 账号/密码 等敏感信息@Overridepublic String getDBPassword() {return "mypassword";  // TODO 改成你自己的,TiDB 可以当成 MySQL 使用, 默认密码为空字符串 ""}}
  1. 打包并运行
    命令行中回到项目目录APIJSONDemo ,如:
cd ~/APIJSON-Demo/APIJSON-Java-Server/APIJSONDemo

运行 MAVEN 的 mvn 命令,在target目录中生成jar文件:

mvn clean install

在当前目录中,运行生成的jar文件,默认端口 8080:

java -jar target/apijson-demo-7.1.5.jar

要偷懒也可以使用通配符*

java -jar target/*.jar
  1. 测试

在官网找到测试工具,也可以使用curl, swagger, postman等。
在这里插入图片描述
修改服务器地址,及POST/GET等选项,点击发送请求:

在这里插入图片描述

返回json格式数据:

在这里插入图片描述
6. 其他

如果要自定义java bean 或者 登陆验证等其他后端开发需求,可以看APIJSONBoot项目

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

V4L2杂谈

V4L2的开发手册 在做v4l2的开发的时候, 可以使用v4l2-ctl命令协助调试和软件开发。关于linux多媒体开发可以参考链接:https://www.linuxtv.org/wiki/index.php/Main_Page关于v4l2的api接口开发可以参考:https://linuxtv.org/docs.php在linux…

(五)深入了解AVFoundation-播放:多音轨、字幕、倍速播放与横竖屏切换

引言 在之前的博客中,我们已经实现了一个相对完整的播放器,具备了基本功能,如播放、暂停、播放进度显示和拖拽快进等。这为我们提供了一个坚实的基础。接下来,我们将进一步扩展播放器的功能,使其更具灵活性和实用性&a…

3ds Max 2016的版本怎么处理 按键输入被主程序截断 C#winform窗体接受不到英文输入

3ds Max 2016的版本怎么处理 按键输入被主程序截断 C#winform窗体接受不到英文输入 如果窗体失去焦点应该取消 全局监听事件 解决方案:在窗体失去焦点时取消全局键盘钩子 为了确保 WinForms 窗体失去焦点时不再拦截键盘事件(避免影响 3ds Max 或其他程…

华为手机或平板与电脑实现文件共享

1.手机或平板与电脑在同一个网络 2.打开手机或平板端,设置---更多连接----快分享或华为分享打开此功能-----开启共享至电脑 3.打开电脑,网络中就可看到手机端分享的用户名称 4. 登陆就可访问手机 5.常见问题 5.1 电脑未发现本机 5.2 修改了访问密码后再…

elemenPlus中,如何去掉el-input中 文本域 textarea自带的边框和角标

1、去掉角标 :deep(.el-textarea__inner) {resize: none !important; // 去除右下角图标 }2、去除边框&#xff0c;并自定义背景色 <el-inputref"textareaRef"v-model"tempContent":style"{--el-border-color: rgba(255,255,255,0.0),--el-input-…

xv6-labs-2024 lab2

lab-2 0. 前置 课程记录 操作系统的隔离性&#xff0c;举例说明就是&#xff0c;当我们的shell&#xff0c;或者qq挂掉了&#xff0c;我们不希望因为他&#xff0c;去影响其他的进程&#xff0c;所以在不同的应用程序之间&#xff0c;需要有隔离性&#xff0c;并且&#xff0…

MCU控制4G模组(标准AT命令),CatM的最大速率?

根据3GPP标准&#xff0c;Cat M1的上行峰值速率大约是1 Mbps&#xff0c;下行大约是1 Mbps。但实际速率会受到多种因素影响&#xff0c;比如网络条件、信号强度、模块配置等。 考虑使用AT命令时的开销。每次发送数据都需要通过AT命令&#xff0c;比如ATQISEND&#xff0c;会引…

JavaScript(JS进阶)

目录 00闭包 01函数进阶 02解构赋值 03通过forEach方法遍历数组 04深入对象 05内置构造函数 06原型 00闭包 <!-- 闭包 --><html><body><script>// 定义&#xff1a;闭包内层函数&#xff08;匿名函数&#xff09;外层函数的变量&#xff08;s&…

6.1es新特性解构赋值

解构赋值是 ES6&#xff08;ECMAScript 2015&#xff09;引入的语法&#xff0c;通过模式匹配从数组或对象中提取值并赋值给变量。&#xff1a; 功能实现 数组解构&#xff1a;按位置匹配值&#xff0c;如 let [a, b] [1, 2]。对象解构&#xff1a;按属性名匹配值&#xff0c;…

SpringBoot美容院管理系统设计与实现

基于SpringBoot的美容院管理系统免费源码&#xff0c;帮助您快速搭建高效、智能的美容院管理平台。该系统涵盖了管理员、技师、前台、普通用户及会员五大功能模块&#xff0c;以下是系统的核心功能与部署方式详细介绍。 ​功能模块 ​管理员功能 ​美容部位管理&#xff1a;支…

记一次某网络安全比赛三阶段webserver应急响应解题过程

0X01 任务说明 0X02 靶机介绍 Webserver&#xff08;Web服务器&#xff09;是一种软件或硬件设备&#xff0c;用于接收、处理并响应来自客户端&#xff08;如浏览器&#xff09;的HTTP请求&#xff0c;提供网页、图片、视频等静态或动态内容&#xff0c;是互联网基础设施的核心…

ChatGPT 4:引领 AI 创作新时代

文章目录 前言一、ChatGPT 4 的技术革新二、AI 文案创作&#xff1a;精准生成与个性化定制三、AI 绘画艺术&#xff1a;从文字到图像的神奇转化四、AI 视频制作&#xff1a;自动化剪辑与创意实现五、知识库与 ChatGPT 4 的深度融合六、全新的变革和机遇七、相关书籍推荐《ChatG…

HTTP请求-请求行

请求行&#xff08;方法&#xff0c;URL&#xff0c;版本号&#xff09; 方法&#xff1a; 描述了这次请求的目的。 常见方法&#xff1a; GET&#xff1a;从服务器拿一个东西过来&#xff08;读操作&#xff09; POST&#xff1a;往服务器放一个东西去&#xff08;写操作…

OSPF不规则区域和LSA

OSPF不规则区域 1.远离骨干的非骨干区域 R1-R4四台路由器能够正常学习到彼此路由&#xff0c;但是R5不行&#xff0c;因为R5是非法ABR 解决方法&#xff1a; 1使用Tunnel隧道将AR4连接到骨干区域 &#xff08;1&#xff09; 使用隧道解决不规则区域的问题 a.可能造成选路不…

【VS Code】开发C++跳转配置

C配置c_cpp_properties.json {"env": {"myIncludePath": ["${workspaceFolder}/src/include","${workspaceFolder}/src","${workspaceFolder}","/home/xxx/include/"],"myDefines": ["RELEASE&qu…

Spring AI应用:利用DeepSeek+嵌入模型+Milvus向量数据库实现检索增强生成--RAG应用(超详细)

Spring AI应用&#xff1a;利用DeepSeek嵌入模型Milvus向量数据库实现检索增强生成–RAG应用&#xff08;超详细&#xff09; 在当今数字化时代&#xff0c;人工智能&#xff08;AI&#xff09;技术的快速发展为各行业带来了前所未有的机遇。其中&#xff0c;检索增强生成&…

Spring 的 IoC 和 DI 详解:从零开始理解与实践

Spring 的 IoC和 DI 详解&#xff1a;从零开始理解与实践 一、IoC&#xff08;控制反转&#xff09; 1、什么是 IoC&#xff1f; IoC 是一种设计思想&#xff0c;它的核心是将对象的创建和管理权从开发者手中转移到外部容器&#xff08;如 Spring 容器&#xff09;。通过这种…

JVM基础架构:内存模型×Class文件结构×核心原理剖析

&#x1f680;前言 “为什么你的Java程序总在半夜OOM崩溃&#xff1f;为什么某些代码性能突然下降&#xff1f;一切问题的答案都在JVM里&#xff01; 作为Java开发者&#xff0c;如果你&#xff1a; 对OutOfMemoryError束手无策看不懂GC日志里的神秘数字好奇.class文件如何变…

.DS_Store文件泄露、.git目录泄露、.svn目录泄露漏洞利用工具

&#x1f409;工具介绍 一款图形化的 .DS_Store文件泄露、.git目录泄露、.svn目录泄露漏洞利用工具。 &#x1f3af;使用 本工具使用Python3 PyQt5开发&#xff0c;在开始使用前&#xff0c;请确保已经安装了相关模块&#xff1a; pip3 install -r requirements.txt -i ht…

为何在 FastAPI 中需要允许跨域访问(CORS)?(Grok3 回答)

prompt: 你是一个文笔流畅、专业性极强的技术博客博主&#xff0c;你将结合具体的例子和实际代码解释写一篇为何后端选择fastapi框架时&#xff0c;需要允许跨域访问。 为何在 FastAPI 中需要允许跨域访问&#xff08;CORS&#xff09;&#xff1f; 在现代 Web 开发中&#xf…