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.pswp.cn/pingmian/76282.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/76282.shtml
英文地址,請注明出處:http://en.pswp.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…