apijson是強大的工具,簡化了CRUD的操作,只要有數據庫表,就能自動生成RESTFUL接口。但初次上手也是摸索了很長時間,尤其是部署與使用上,這里嘗試以初學者角度來說下:
一、好處
1、對于簡單的應用,只需要建表,自動生成RESTFUL的CRUD接口,時間節省明顯;
2、支持跨表、篩選等復雜的數據庫查詢;
3、大廠出口,品質優秀
詳細的就不介紹了,可上官網查看:apijson.cn
二、快速上手
直接使用官方APIJSON-Demo。
- 必要條件
安裝好Java和Maven (Maven設置為阿里源,這樣下載包更快)。
- 下載示例
git clone https://github.com/APIJSON/APIJSON-Demo.git
或者
git clone https://gitee.com/APIJSON/APIJSON-Demo.git
示例中有很多項目,滿足不同的使用場景。
- 數據庫準備(Mysql為例)
進入下載好的目錄,找到sys.sql文件,路徑在:APIJSON-Demo/MySQL/sys.sql
使用數據庫管理工具,導入sql文件并執行,會把apijson運行所需要的數據庫文件建表,并提供案例。
運行后,生成如下的數據表:
- 修改java配置文件
這里使用APIJSONDemo項目 (路徑在:APIJSON-Demo/APIJSON-Java-Server/APIJSONDemo
),APIJSONDemo 使用了apijson-framework,自動化更強。
配置文件主要用于設定數據庫連接的參數,主機、數據庫和密碼。
- 默認是sys數據庫,可以自定義,這樣現有的數據庫不用改動。
- !!! 要自動化更高(部署好后就不用修改后端代碼),自己的數據表名必須是大寫字母開頭,列名不要是中文,不然可以返回狀態碼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 使用, 默認密碼為空字符串 ""}}
- 打包并運行
命令行中回到項目目錄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
- 測試
在官網找到測試工具,也可以使用curl, swagger, postman等。
修改服務器地址,及POST/GET等選項,點擊發送請求:
返回json格式數據:
6. 其他
如果要自定義java bean 或者 登陸驗證等其他后端開發需求,可以看APIJSONBoot項目