乐趣区

关于后端: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 进行匹配。

我的项目构造

模型

该包将具备文档的 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 存储库链接在这里。

退出移动版