天天看點

MongoDB最簡單的入門教程之四:使用Spring Boot操作MongoDB

Spring Boot 是一個輕量級架構,可以完成基于 Spring 的應用程式的大部配置設定置工作。Spring Boot的目的是提供一組工具,以便快速建構容易配置的Spring應用程式,省去大量傳統Spring項目的繁瑣配置。

MongoDB是一個基于分布式檔案存儲的資料庫。由 C++ 語言編寫。旨在為 WEB 應用提供可擴充的高性能資料存儲解決方案。

本文介紹如何使用Spring Boot操作MongoDB,通過Java代碼在MongoDB裡插入資料。

首先按照這個教程的第一篇文章的介紹,在本地搭建好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>      

這個dependent能讓您的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);
}      

這個JUnit單元測試運作成功後,

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