📜  Spring Boot – 使用 MongoDB 的 CRUD 操作(1)

📅  最后修改于: 2023-12-03 15:05:15.848000             🧑  作者: Mango

Spring Boot – 使用 MongoDB 的 CRUD 操作

简介

在本教程中,我们将学习如何使用 Spring Boot 和 MongoDB 完成 CRUD 操作。CRUD 表示创建(Create)、读取(Read)、更新(Update)和删除(Delete)。

MongoDB 是一种流行的 NoSQL 数据库,它使用文档存储(而不是传统的表格存储),并且采用动态模式。Spring Boot 是一种用于构建微服务应用程序的快速开发框架。

步骤
步骤 1 - 添加 MongoDB 依赖项

打开 pom.xml 文件,并在文件中添加以下 MongoDB 依赖项:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
步骤 2 - 创建模型类

在本教程中,我们将创建一个简单的模型类来保存数据。打开 src/main/java/com/example/demo/model/User.java 文件,并在文件中添加以下代码:

package com.example.demo.model;

import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;

@Document(collection = "users")
public class User {

    @Id
    private String id;
    private String name;
    private int age;

    public User() {
    }

    public User(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "User{" +
                "id='" + id + '\'' +
                ", name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

在上面的代码中,我们定义了一个名为 User 的简单模型类,该类包含 id、name 和 age 三个属性。我们使用 @Document 注解来声明该类对应 MongoDB 中的一个集合(以下简称“users”集合)。Spring Data MongoDB 将使用该注解来确定要保存数据的集合名称。

注解 @Id 用于标识 MongoDB 中文档的_id字段。如果我们没有将该注解应用于任何属性,则 Spring Data MongoDB 将假定该字段名为“_id”。

步骤 3 - 创建数据库访问类

接下来,我们将创建一个数据库访问类以便于进行 CRUD 操作。打开 src/main/java/com/example/demo/repository/UserRepository.java 文件,并在文件中添加以下代码:

package com.example.demo.repository;

import com.example.demo.model.User;
import org.springframework.data.mongodb.repository.MongoRepository;

public interface UserRepository extends MongoRepository<User, String> {
}

在上面的代码中,我们定义了一个名为 UserRepository 的类,并扩展了 MongoRepository 接口。该接口定义了很多基本的数据操作方法,例如 save()delete()findAll()等方法。我们还使用泛型来声明了用于 User 模型类的索引。

步骤 4 - 创建 CRUD 控制器

现在,我们需要创建一个控制器类以便于将数据库操作暴露为 API,并且我们可以使用 Postman 等工具来调用该 API。打开 src/main/java/com/example/demo/controller/UserController.java 文件,并在文件中添加以下代码:

package com.example.demo.controller;

import com.example.demo.model.User;
import com.example.demo.repository.UserRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;
import java.util.Optional;

@RestController
@RequestMapping("/users")
public class UserController {

    @Autowired
    private UserRepository userRepository;

    @PostMapping("/")
    public User save(@RequestBody User user) {
        return userRepository.save(user);
    }

    @GetMapping("/")
    public List<User> findAll() {
        return userRepository.findAll();
    }

    @GetMapping("/{id}")
    public Optional<User> findById(@PathVariable String id) {
        return userRepository.findById(id);
    }

    @PutMapping("/{id}")
    public User update(@PathVariable String id, @RequestBody User user) {
        user.setId(id);
        return userRepository.save(user);
    }

    @DeleteMapping("/{id}")
    public void deleteById(@PathVariable String id) {
        userRepository.deleteById(id);
    }
}

上面的代码中,我们定义了一个名为 UserController 的 REST 控制器,并使用注解 @RestController 和 @RequestMapping 来配置该控制器的路由。我们使用注解 @Autowired 来注入 UserRepository 接口的实例,以便于进行数据库操作。

我们使用 @PostMapping 注解来定义 save() 方法,该方法使用 @RequestBody 注解来将 POST 请求正文中的 JSON 数据转换为 User 实例,并将其保存到 MongoDB 中。

我们使用 @GetMapping 注解来定义 findAll() 和 findById() 方法,该方法用于检索数据库中的用户记录。findAll() 方法将返回 users 集合中的所有用户记录,而 findById() 方法将使用 @PathVariable 注解来获取 ID 参数,并返回与该 ID 相关联的用户记录的 Optional 实例。

我们使用 @PutMapping 注解来定义 update() 方法,该方法将使用 @PathVariable 注解来获取 ID 参数,将该 ID 传递给 User 实例,并将其保存到 MongoDB 中。

我们使用 @DeleteMapping 注解来定义 deleteById() 方法,该方法将使用 @PathVariable 注解来获取 ID 参数,然后从 MongoDB 中删除该 ID 的用户记录。

步骤 5 - 修改 application.properties 文件

最后,在运行应用程序之前,我们需要修改 application.properties 配置文件,以便于将连接信息传递给 MongoDB。打开 src/main/resources/application.properties 文件,并添加以下数据源配置:

spring.data.mongodb.uri=mongodb://localhost:27017/test

此配置文件使用 spring.data.mongodb.uri 属性来指定 MongoDB 连接字符串。在上面的示例中,我们将 MongoDB 连接字符串设置为 mongodb://localhost:27017/test,其中,“test”是数据库的名称,而“localhost:27017”是要连接的 MongoDB 实例的主机和端口。

运行应用程序

在下载代码并完成上述修改后,我们就可以使用 IDE 在本地计算机上运行应用程序了。或者,您也可以使用以下命令在命令行中运行应用程序:

mvn spring-boot:run

在应用程序运行成功后,我们就可以使用 Postman 工具来测试应用程序的 REST API 是否正常工作了。请注意,应用程序在默认情况下将运行在端口 8080 上,因此,如果使用 Postman 进行测试,则需要在测试请求 URL 中指定该端口。

结论

在本教程中,我们使用 Spring Boot 和 MongoDB 完成了创建、读取、更新和删除用户记录的功能。在实际的应用程序中,您将能够通过以上学习,快速构建 CRUD 应用程序,并使用任何 NoSQL 数据库来保存和管理数据。