MongoDB 入門教程系列之二:使用 Spring Boot 操作 MongoDB
本教程的前一篇文章: MongoDB 入門教程系列之一:開發環境搭建以及 Node.js 和 Java 的讀寫訪問 ,我們首先介紹了 MongoDB 本地環境的搭建,接著舉了兩個具體的例子,展示瞭如何使用 Node.js 和 Java 訪問 MongoDB 儲存的資料。
本教程繼續介紹如何使用業界流行的開發工具來操作 MongoDB.
Spring Boot 是一個輕量級框架,可以完成基於 Spring 的應用程式的大部分配置工作。Spring Boot 的目的是提供一組工具,以便快速構建容易配置的 Spring 應用程式,為應用開發人員省去大量傳統 Spring 專案的繁瑣配置。
本教程第一篇文章已經介紹過,MongoDB 是一個基於分散式檔案儲存的資料庫,由 C++ 語言編寫,旨在為 WEB 應用提供可擴充套件的高效能資料儲存解決方案。
本文介紹如何使用 Spring Boot 操作 MongoDB,從而通過 Java 程式碼在 MongoDB 裡插入資料。
首先按照本教程前一篇文章的介紹,在本地搭建好 MongoDB 的開發環境。
新建一個 Java 專案,pom.xml 的內容如下:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.springframework</groupId>
<artifactId>gs-rest-service</artifactId>
<version>0.1.0</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.3.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongodb-driver</artifactId>
<version>3.6.4</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.jayway.jsonpath</groupId>
<artifactId>json-path</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
</dependencies>
<properties>
<java.version>1.8</java.version>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
<repositories>
<repository>
<id>spring-releases</id>
<url>https://repo.spring.io/libs-release</url>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>spring-releases</id>
<url>https://repo.spring.io/libs-release</url>
</pluginRepository>
</pluginRepositories>
</project>
複製程式碼

其中下面這個 dependency 的作用是為 SpringBoot 應用提供操作 MongoDB 的功能:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
複製程式碼
而這個 dependency 能讓您的 Spring Boot 應用支援 junit:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
複製程式碼
在 src/main/test
資料夾下建立一個以 Tests 結尾的 .java 檔案,我的例子裡是 ApplicationTests.java:
將如下程式碼貼上進去:
package main.test;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import main.java.library.Application;
import main.java.library.Book;
import main.java.library.BookRepository;
@RunWith(SpringRunner.class)
@SpringBootTest(classes=Application.class)
public class ApplicationTests {
@Autowired
private BookRepository bookRepository;
@Before
public void setUp() {
bookRepository.deleteAll();
}
@Test
public void test() throws Exception {
bookRepository.save(new Book("1", "didi", "Jerry"));
}
}
複製程式碼

第 27 行程式碼,新建了一個 Book 物件,id 為 1,name 為 didi,作者為 Jerry.
然後通過 bookRepository 加入到 MongoDB 裡。
BookRepository 的實現:
import java.util.Optional;
import org.springframework.data.mongodb.repository.MongoRepository;
public interface BookRepository extends MongoRepository<Book, String>, BookRepositoryCustom {
public Optional<Book> findByName(String name);
}
複製程式碼
在 Eclipse 裡,確保這個 JUnit 單元測試執行成功:

在 MongoDB Compass 裡成功看到這條插入的記錄:


總結
SpringBoot 是一個基於 Spring 的 Java 應用開發框架,其設計目的是用來簡化 Spring 應用的初始搭建以及開發過程,能夠幫助開發人員專注於業務開發任務本身上去。本文在系列第一篇文章的基礎上,介紹了在 SpringBoot 應用裡對 MongoDB 的讀寫訪問實現細節。
本教程的第一篇文章: MongoDB 入門教程系列之一:開發環境搭建以及 Node.js 和 Java 的讀寫訪問 。
- 從“資料孤島”到統一資料體系,明源雲 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 如何實現大規模無身份資訊認證?
- 基於雲核心的未來雲端計算架構