MongoDB 入門教程系列之三:使用 Restful API 操作 MongoDB

本教程的前兩篇文章,分別介紹瞭如何使用 Node.js,普通的 Java 應用以及 SpringBoot 應用對 MongoDB 進行讀寫訪問。
本教程前兩篇文章:
本文介紹另一種採取 Restful API 的方式來操縱 MongoDB.
使用 SpringBoot 開發 Restful API 對 MongoDB 進行讀寫訪問
通過 Spring Boot 構造出 Restful API,這樣可以直接在瀏覽器裡通過呼叫 Restful API,對 MongoDB 進行增刪查改了。

先看按照本教程介紹的步驟,實現的最終效果。
假設我本地 MongoDB 的資料庫裡有一張表 book,只有一條記錄,id 為 1.

通過瀏覽器裡的這個 url 根據 id 讀取該記錄:http://localhost:8089/bookmanage/read?id=1

採取如下 url 進行記錄的建立:
http://localhost:8089/bookmanage/create?id=2&name=Spring&author=Jerry


記錄搜尋操作的 url:http://localhost:8089/bookmanage/search?name=*

記錄的刪除:刪除 id 為 2 的記錄
http://localhost:8089/bookmanage/delete?id=2

下面是上述功能的實現細節。
-
建立一個新的 controller,位於資料夾 src/main/java 下。

這個 controller 加上註解 @RestController
.
@RestController 註解相當於 @ResponseBody
和 @Controller
這兩個註解提供的功能的並集。
這裡有一個知識點就是,如果用註解 @RestController 定義一個 Controller,那麼這個 Controller 裡的方法無法返回 jsp 頁面或者 html 頁面,因為 @ResponseBody 註解在起作用。所以即使配置了檢視解析器 InternalResourceViewResolver 也不會生效,此時返回的內容就是 @RestController 定義的控制器方法裡返回的內容。

@GetMapping
@RequestParam 定義了 url:bookmanage/read 後面的引數為 id 或者 name.
讀操作最終將會使用我們之前介紹過的 Java 訪問 MongoDB 的方法,即通過 @Autowired
注入的 BookRepository 例項完成對 MongoDB 的操作。

-
建立操作的原始碼:
@GetMapping("/bookmanage/create")
public Book create(
@RequestParam(value="id", defaultValue="") String id,
@RequestParam(value="name", defaultValue="noname") String name,
@RequestParam(value="author", defaultValue="noauthor") String author
){
Book book = repository.save(new Book(id,name,author));
return book;
}
複製程式碼

-
刪除操作的原始碼:
@GetMapping("/bookmanage/delete")
public boolean delete(
@RequestParam(value="id", defaultValue="") String id
){
//if no record
if(repository.findById(id)==null)
return false;
// do database delete
repository.deleteById(id);
return true;
}
複製程式碼

如何在 SAP 雲平臺上使用 MongoDB
我想在 SAP 雲平臺的 Cloud Foundry 環境下使用 MongoDB 服務,但是在 Service Marketplace 上找不到這個服務。

命令列 cf marketplace
返回的結果也沒有 MongoDB 相關的服務:

解決方案
退回到 SAP 雲平臺的 Global Account,點選 Entitlement,發現沒有給 Subaccount 分配 MongoDB:

Quota 分配成 1,儲存即可。

再回到 organization 的 space 下面,發現現在 MongoDB 服務已經處於可用狀態了。

命令列 cf marketplace
現在能夠看到 MongoDB 服務的版本了:

下面是在 SAP 雲平臺 CloudFoundry 環境使用 MongoDB 服務的詳細步驟。
-
使用命令列
cf marketplace
檢視當前 SAP 雲平臺的 MongoDB 服務的版本號:在我使用的 SAP 雲平臺上是v3.0-dev
:

使用如下命令列建立一個服務例項:
cf create-service mongodb v3.0-dev mongo-service

mvn package

能看到如下的輸出:


該命令會生成一個 hcp-cf-mongodb-tutorial-1.0-SNAPSHOT.jar
:

manifest.yml

cf push
部署成功後,在 Cockpit 裡能看到該應用處於 Started 狀態:



瀏覽器訪問該應用,能看到如下輸出:

該輸出是 Java 專案裡的 RootController 生成的:

最後我們對 SAP UI5 Repository 和 MongoDB Repository 進行比較,作為本系列的結尾。
UI5 Repository
從本地通過 Eclipse team provider 上傳到 ABAP gateway system 的 UI5 應用,都會自動生成一個 UI5RepositoryPathMapping.xml
檔案,裡面記錄的是 debug version 的指令碼檔名稱和路徑的對映關係。如下圖所示:

控制這個對映檔案的訪問工具類 manipulation utility 的名稱:
UI5/CL_UI5_REP_PATH_MAPPER
SpringBoot 應用裡的 MongoDB Repository
和 ADBC 與 JDBC 不同,通過 MongoDB Repository 訪問 MongoDB 資料庫,並不會在程式碼中出現用字串拼接的 SQL 語句:

例如我們檢視 findByName
的定義:

findByName 的實現:第 20 行程式碼構造一個 Query 例項,然後將其傳入 21 行 mongoTemplate
的 find
方法:

總結
本文首先介紹瞭如何使用 SpringBoot 應用開發 Restful API,從而能夠在瀏覽器裡就能對 MongoDB 的讀寫操作進行測試,接著介紹瞭如何在通用的雲平臺 CloudFoundry 環境裡消費 MongoDB 服務。
本教程前兩篇文章:
劃線
評論
複製
- 從“資料孤島”到統一資料體系,明源雲 DataOps 實踐探索之路 | 卓越技術團隊訪談錄
- 如何管理你下載的一大堆 Python 包【❤️win 環境及 linux 環境下建立虛擬環境詳解❤️】
- 在 Hadoop 環境裡面統計西遊記文章的片語(hdfs 實驗)
- 一節課讓你徹底搞懂 python 裡面試最常問問題之一深淺複製
- 學 C 還是學 Java?做軟體研發還需掌握哪些知識和技能?
- 雲原生到底是什麼?它會是未來發展的趨勢嗎?
- Java 流程控制
- 〖Docker 指南③〗Docker 映象的深度解析
- 我不想 MySQL 分片
- 谷歌卷自己,繼 Imagen 之後繼續放大招:靠 200 億引數由文字生成的影象驚呆網友!
- 雨林開源行:暢聊開源,走近 Gitee!
- 英偉達是如何做 GPU 程式設計的(一)
- 超級詳細的 Maven 教程(基礎 高階)
- 6 年技術迭代,一文詳解阿里全球化出海 & 合規的挑戰及探索
- 尤雨溪向 React 推薦自己研發的 Vite,網友:用第三方工具沒有任何意義
- Mac 中 Git 如何忽略.DS_Store 檔案
- 從演算法到工程 - 推薦系統全面總結
- Android 自定義 View 之隨機數驗證碼
- Meta 如何實現大規模無身份資訊認證?
- 基於雲核心的未來雲端計算架構