MongoDB 与 Spring Boot:一个简单的 CRUD

Java攻城师 -
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进行匹配。项目结构

image.png

模型

该包将具有文档的 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<Person> getAllPersonInformation() {
        return personRepository.findAll();
    }
要获取特定人员的信息: getPersonById()
此方法将id作为参数并返回与 ID 匹配的人员信息。
 public Optional<Person> getPersonInformationById(String id) {
        return personRepository.findById(id);
    }
更新现有数据

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

public Person updatePersonUsingId(String id, Person person) {
        Optional<Person> 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存储库链接在这里。

特别申明:本文内容来源网络,版权归原作者所有,如有侵权请立即与我们联系(cy198701067573@163.com),我们将及时处理。

Tags 标签

后端javaspringbootmongodb程序员

扩展阅读

加个好友,技术交流

1628738909466805.jpg