MongoDB 与 Spring Boot:一个简单的 CRUD

在本文章中,我们将使用 Java Spring Boot 探索 MongoDB。我们将创建一个简单的 CRUD API 来与我们的 Mongo 数据库进行交互。

MongoDB 是一个开源的非关系型、面向文档的数据库。MongoDB 面向文档意味着它将数据存储在类似文档的 JSON 中,这使其更强大和更具表现力。MongoDB 非常容易扩展和缩减的能力被认为是其优于竞争对手的优势之一。数据以密钥对值存储在文档中。MongoDB 的另一个组件是集合,它是文档的简单集合。Collection对应关系数据库中的Table。在这篇博客中,我们将使用 Java Spring Boot 探索这个数据库。我们将创建一个简单的 CRUD API 来与我们的 Mongo 数据库进行交互。

为什么要使用 MongoDB?

它是基于文档的,因此在每个文档可以具有不同字段的情况下更加灵活,而这在关系数据库中是无法完成的。
它允许我们索引文档中的任何字段以改进搜索结果。
它为我们提供了丰富而强大的查询语言,允许我们使用任何字段进行过滤和排序,无论该字段是如何嵌套的。
它为我们提供了数据的高可扩展性(分片)和高可用性(复制)。

MongoDB 与 Java Spring Boot

假设您现在对 MongoDB 有了基本的了解,我们现在将了解如何通过构建一个小型 Spring Boot API 来利用 MongoDB 来执行基本的 CRUD 操作。

先决条件

  • 您应该在本地环境中安装了 MongoDB。为了节省设置时间,您还可以使用 MongoDB Docker 映像,您可以在此处查看如何操作。此应用程序将在默认的 mongo 端口中运行。
  • 使用 Web 启动和 mongo 依赖项创建 Spring Boot 应用程序。您可以将pom.xml 与项目存储库中提供的pom.xml进行匹配。

项目结构

MongoDB 与 Spring Boot:一个简单的 CRUD_第1张图片

模型

该包将具有文档的 java 对象模型。我们在这里创建了一个简单的 Person 模型,其中包含字段id和name。

该@Document注释用于定义在文档将被保存在集合的名称。

@Document(collection = "Person")
public class Person {
    @Id
    private String id;
    private String name;
    public Person(@JsonProperty("id") String id,
                  @JsonProperty("name") String name) {
        this.id = id;
        this.name = name;
    }
    public String getId() {
        return id;
    }
    public String getName() {
        return name;
    }
    public void setId(String id) {
        this.id = id;
    }
    public void setName(String name) {
        this.name = name;
    }
}

DAO

我们项目中的DAO就是数据访问对象。它包含 Mongo 存储库的实现。

在这里,我们创建了一个PersonRepository扩展MongoRepository接口的接口。MongoRepository带有基本的 CRUD 操作供我们开箱即用。让我们的工作更轻松。

的实现PersonRepository在PersonDao类中。所有这些操作都将使用 API 完成。

插入数据(创建)

在这里,insert()方法将接受 Person 对象作为参数并将人员详细信息插入 MongoDB。

 public Person insertPersonData(Person person) {
        return personRepository.insert(person);
}

获取数据(读取)

在这里,我们定义了两种从 MongoDB 读取数据的方法。

  • 获取所有人信息: getAllPersonInformation()
    它将返回一个集合Person。
public Collection getAllPersonInformation() {
        return personRepository.findAll();
    }
  • 要获取特定人员的信息: getPersonById()
    此方法将id作为参数并返回与 ID 匹配的人员信息。
 public Optional getPersonInformationById(String id) {
        return personRepository.findById(id);
    }

更新现有数据

在这里,updatePersonUsingId()method 将接受id和person对象作为参数。

public Person updatePersonUsingId(String id, Person person) {
        Optional findPersonQuery = personRepository.findById(id);
        Person personValues = findPersonQuery.get();
        personValues.setId(person.getId());
        personValues.setName(person.getName());
        return personRepository.save(personValues);
    }

删除数据

这里,该方法deletePersonUsingId()会以anid 为参数,删除该ID对应的person数据。

public void deletePersonUsingId(String id) {
        try {
            personRepository.deleteById(id);
        } catch (NoSuchElementException e) {
            e.printStackTrace();
        }
}

就是这个。所有这些操作都可以通过使用我们在控制器中提供的 API 来完成。使用 Postman 测试此应用程序。
免费领取更多学习资料加群:3907814

结论

这只是一个快速浏览的基本 CRUD 示例,但生产级代码更加清晰、详细并且包含许多场景。这个例子远非如此。

下面给出了这个项目的链接,其中包含一个docker-compose.yml和 MongoDB 图像,可帮助您快速运行此示例!

项目的Github存储库链接在这里

你可能感兴趣的:(MongoDB 与 Spring Boot:一个简单的 CRUD)