在本文章中,咱们将应用 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存储库链接在这里。