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 的读写访问实现细节。

相关文章

这篇文章主要介绍了spring的事务传播属性REQUIRED_NESTED的原...
今天小编给大家分享的是一文解析spring中事务的传播机制,相...
这篇文章主要介绍了SpringCloudAlibaba和SpringCloud有什么区...
本篇文章和大家了解一下SpringCloud整合XXL-Job的几个步骤。...
本篇文章和大家了解一下Spring延迟初始化会遇到什么问题。有...
这篇文章主要介绍了怎么使用Spring提供的不同缓存注解实现缓...