使用 Java 和 Spring Boot 為 Postgres 資料庫產生 REST API
本教學將向您展示如何使用 monstarillo 為 Postgres 資料庫產生 Java API。該 API 將使用 Spring Boot 和 Springdoc 來記錄它。該 API 將對您執行它的表執行 CRUD 操作。也將為 API 產生單元測試。
要學習本教程,您將需要:
monstarillo 已安裝。
Postgres 資料庫 – 我將使用 chinhook 資料庫。在 Docker 中設定 Chinhook 範例 Postgres 資料庫
Java已安裝
Java IDE – 我將使用 InteliJ
吉特
第一步是取得我們將用於產生 API 的範本。為此,請克隆儲存庫共用範本。我們將使用的模板位於 java-api 資料夾中。
告訴 Monstarillo 將產生的程式碼放在哪裡
接下來,您需要決定將產生的程式碼放置在哪裡。我將透過 Docker 運行 Monstarillo。我將把目錄 ~/shared-volume 暴露給運行 Monstarillo 的 docker 映像。透過克隆儲存庫建立的共用範本資料夾位於 ~/shared-volume 資料夾中。我將在 ~/shared-volume/code-gen-output 中產生程式碼。 Monstarillo 在產生程式碼時會建立 code-gen-output 資料夾。
修改templates.json檔
Monstarillo 使用 json 檔案來告訴它要運行哪些模板、如何運行它們以及生成的檔案的名稱以及將它們放在哪裡。我們將修改檔案 java-api/postgres/templates.json。 templates.json 檔案中的 templates 陣列告訴 Monstarillo 要運行哪些模板、如何命名它創建的檔案以及將它們放在哪裡。 templates.json 檔案中的標籤陣列定義了模板和/或 templates.json 中使用的一些「標籤」。例如,PackagePath 在 templates.json 檔案中多次使用。 PackagePath 在許多範本中使用,標籤允許我們定義一次。要運行模板,您需要修改標籤數組中的 TemplateRoot 和 OutputPath 標籤。
*TemplateRoot *– 範本根需要指向您複製的儲存庫中的 java-api 資料夾。
*OutputPath *– 輸出路徑需要指向您希望 Monstarillo 放置其產生的檔案的資料夾。如果該資料夾尚不存在,Monstarillo 將建立該資料夾。
*PackageBase * – 用於在類別中設定套件
*ArtifactId * – 在產生的 POM.xml
中使用
*GroupId * – 在產生的 POM.xml
中使用
*ApplicationClassName * – 用作產生的應用程式的主類別名稱
*ModelPropertySurrondString * – 在為應用程式產生模型的模板中使用。如果您的列名稱採用駝峰式大小寫,這非常有用。
我在 docker 中運行 Monstarillo,所以我將標籤設定為:
{ "tagName": "TemplateRoot", "value": "/usr/local/monstarillo/shared-templates/java-api" }, { "tagName": "OutputPath", "value": "/usr/local/monstarillo/code-gen-output/java-01" }
如果我在本地運行 Monstarillo,我會將標籤設為:
{ "tagName": "TemplateRoot", "value": "/home/patrick/code/patrick-templates/java-api" }, { "tagName": "OutputPath", "value": "/home/patrick/code-gen-output/java-01" }
運行 Monstarillo 生成程式碼
接下來我們將建立命令來運行 Monstarillo 來為我們產生程式碼。我們需要告訴 Monstarillo 我們正在使用 Postgres 資料庫並提供連接資訊。我們還需要透過傳遞我們之前設定的 templates.json 檔案的位置來告訴 Monstarillo 要運行哪些模板。
要在 docker 中執行 Monstarillo,我們的命令將類似於:
docker run --volume=/mnt/c/code:/usr/local/monstarillo \ --network=host \ monstarillo/monstarillo:latest postgres \ --t /usr/local/monstarillo/shared-templates/java-api/postgres/templates.json \ --u postgres \ --p <Your Database Password> \ --db "chinhook-db" \ --host "localhost" \ --schema "public" In this command I am mounting /mnt/c/code to the docker image as /usr/local/monstarillo that is running monstarillo. My shared-templates folder is at /mnt/c/code/shared-templates and will be generating code to /mnt/c/code/code-gen-output/java-01
如果我在本地運行 Monstarillo,我的命令將是:
monstarillo postgres \ --t /home/patrick/code/patricks-monstarillo-templates/java-api/templates.json \ --u postgres \ --p <Your Database Password>\ --db "chinhook-db" \ --host "localhost" \ --schema "public"
當您執行命令時,您的輸出將類似於:
請注意,Monstarillo 會列印出每個表格名稱及其運行物件。您也許可以使用此資訊來解決命令中的錯誤。
查看您產生的程式碼
接下來,您可以透過開啟您在所選 IDE 中選擇的輸出目錄來查看程式碼。
接下來,您需要修改產生的程式碼中的 application.properties 檔案以更新資料庫連線資訊。該檔案可以在 src/main/resources/application.properties
找到在 IntelliJ 中,我將在 IDE 中開啟 PersistApi 類別並運行它。
我的新 API 正在運行,我可以測試它。我將使用郵差。我可以透過 http://localhost:8080/album
存取相簿控制器您也可以造訪 http://localhost:8080/swagger-ui/index.html 查看產生的程式碼的 OpenAPI 定義。
注意 src/java/com.monstarillo.persist_api
中產生的單元測試請在評論中告訴我你的想法
以上是使用 Java 和 Spring Boot 為 Postgres 資料庫產生 REST API的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undress AI Tool
免費脫衣圖片

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

Java使用包裝類是因為基本數據類型無法直接參與面向對像操作,而實際需求中常需對象形式;1.集合類只能存儲對象,如List利用自動裝箱存儲數值;2.泛型不支持基本類型,必須使用包裝類作為類型參數;3.包裝類可表示null值,用於區分未設置或缺失的數據;4.包裝類提供字符串轉換等實用方法,便於數據解析與處理,因此在需要這些特性的場景下,包裝類不可或缺。

HashMap與Hashtable的區別主要體現在線程安全、null值支持及性能方面。 1.線程安全方面,Hashtable是線程安全的,其方法大多為同步方法,而HashMap不做同步處理,非線程安全;2.null值支持上,HashMap允許一個null鍵和多個null值,Hashtable則不允許null鍵或值,否則拋出NullPointerException;3.性能方面,HashMap因無同步機制效率更高,Hashtable因每次操作加鎖性能較低,推薦使用ConcurrentHashMap替

StaticmethodsininterfaceswereintroducedinJava8toallowutilityfunctionswithintheinterfaceitself.BeforeJava8,suchfunctionsrequiredseparatehelperclasses,leadingtodisorganizedcode.Now,staticmethodsprovidethreekeybenefits:1)theyenableutilitymethodsdirectly

JIT編譯器通過方法內聯、熱點檢測與編譯、類型推測與去虛擬化、冗餘操作消除四種方式優化代碼。 1.方法內聯減少調用開銷,將頻繁調用的小方法直接插入調用處;2.熱點檢測識別高頻執行代碼並集中優化,節省資源;3.類型推測收集運行時類型信息實現去虛擬化調用,提升效率;4.冗餘操作消除根據運行數據刪除無用計算和檢查,增強性能。

實例初始化塊在Java中用於在創建對象時運行初始化邏輯,其執行先於構造函數。它適用於多個構造函數共享初始化代碼、複雜字段初始化或匿名類初始化場景,與靜態初始化塊不同的是它每次實例化時都會執行,而靜態初始化塊僅在類加載時運行一次。

InJava,thefinalkeywordpreventsavariable’svaluefrombeingchangedafterassignment,butitsbehaviordiffersforprimitivesandobjectreferences.Forprimitivevariables,finalmakesthevalueconstant,asinfinalintMAX_SPEED=100;wherereassignmentcausesanerror.Forobjectref

類型轉換有兩種:隱式和顯式。 1.隱式轉換自動發生,如將int轉為double;2.顯式轉換需手動操作,如使用(int)myDouble。需要類型轉換的情況包括處理用戶輸入、數學運算或函數間傳遞不同類型的值時。需要注意的問題有:浮點數轉整數會截斷小數部分、大類型轉小類型可能導致數據丟失、某些語言不允許直接轉換特定類型。正確理解語言的轉換規則有助於避免錯誤。

工廠模式用於封裝對象創建邏輯,使代碼更靈活、易維護、松耦合。其核心答案是:通過集中管理對象創建邏輯,隱藏實現細節,支持多種相關對象的創建。具體描述如下:工廠模式將對象創建交給專門的工廠類或方法處理,避免直接使用newClass();適用於多類型相關對象創建、創建邏輯可能變化、需隱藏實現細節的場景;例如支付處理器中通過工廠統一創建Stripe、PayPal等實例;其實現包括工廠類根據輸入參數決定返回的對象,所有對象實現共同接口;常見變體有簡單工廠、工廠方法和抽象工廠,分別適用於不同複雜度的需求。
