📅  最后修改于: 2023-12-03 15:05:15.848000             🧑  作者: Mango
在本教程中,我们将学习如何使用 Spring Boot 和 MongoDB 完成 CRUD 操作。CRUD 表示创建(Create)、读取(Read)、更新(Update)和删除(Delete)。
MongoDB 是一种流行的 NoSQL 数据库,它使用文档存储(而不是传统的表格存储),并且采用动态模式。Spring Boot 是一种用于构建微服务应用程序的快速开发框架。
打开 pom.xml
文件,并在文件中添加以下 MongoDB 依赖项:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
在本教程中,我们将创建一个简单的模型类来保存数据。打开 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”。
接下来,我们将创建一个数据库访问类以便于进行 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 模型类的索引。
现在,我们需要创建一个控制器类以便于将数据库操作暴露为 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 的用户记录。
最后,在运行应用程序之前,我们需要修改 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 数据库来保存和管理数据。