📜  Spring Boot – 使用 MongoDB 的 CRUD 操作

📅  最后修改于: 2022-05-13 01:55:11.426000             🧑  作者: Mango

Spring Boot – 使用 MongoDB 的 CRUD 操作

CRUD 代表创建、读取/检索、更新和删除,这是我们在持久性存储上执行的四个基本操作。 CRUD 是面向数据和 HTTP 方法的标准化使用。 HTTP 有一些方法可以用作 CRUD 操作,并且请注意,从开发的角度来看,它们在编程中非常重要,这也有助于我们更好地联系 Web 开发,并在处理数据库时帮助我们。

因此,标准的 CRUD 操作如下:

  • POST : 创建一个新资源
  • GET :读取/检索资源
  • PUT :更新现有资源
  • DELETE :删除资源

顾名思义

  • CREATE 操作:执行 INSERT 语句以创建新记录。
  • READ 操作:根据输入参数读取表记录。
  • 更新操作:对表执行更新语句。它基于输入参数。
  • DELETE 操作:删除表中的指定行。它也基于输入参数。

因此,在本文中,我们将通过创建 Spring Boot 应用程序并使用 MySQL 数据库来执行一些基本的 CRUD 操作。所以这里简单解释一下什么是Spring Boot和什么是MySQL数据库。

弹簧靴

Spring Boot 建立在 Spring 之上,包含了 Spring 的所有特性。并且现在正成为开发人员的最爱,因为它是一个快速的生产就绪环境,使开发人员能够直接专注于逻辑,而不是为配置和设置而苦恼。 Spring Boot 是一个基于微服务的框架,在其中制作可用于生产的应用程序只需要很少的时间。

MongoDB 和 MongoDB 指南针

MongoDB 是最流行的 NoSQL 数据库,是一个开源的面向文档的数据库。术语“NoSQL”的意思是“非关系的”。这意味着 MongoDB 不是基于类似表的关系数据库结构,而是为数据的存储和检索提供了一种完全不同的机制。这种存储格式称为 BSON(类似于 JSON 格式)。一个简单的 MongoDB 文档结构:

{
 title: 'GeeksforGeeks',
 by: 'Amiya Rout',
 url: 'https://www.geeksforgeeks.org',
 type: 'NoSQL'
} 

MongoDB Compass 是一个强大的 GUI,用于在可视化环境中查询、聚合和分析 MongoDB 数据。 Compass 可免费使用且源代码可用,并可在 macOS、Windows 和 Linux 上运行。

因此,要使用 Spring Boot 应用程序连接 MongoDB 并执行 CRUD 操作,我们只需在 application.properties 文件中配置它,如下所示:

# Configuration for MongoDB

spring.data.mongodb.host=localhost
spring.data.mongodb.port=27017
spring.data.mongodb.database=BookStore (Here BookStore is my database name)

Mongo存储库

MongoRepository 是 Spring Data 在包org.springframework.data.mongodb.repository中提供的一个接口。 MongoRepository 扩展了PagingAndSortingRepositoryQueryByExampleExecutor接口,进一步扩展了CrudRepository接口。 MongoRepository 提供了帮助创建 CRUD 应用程序的所有必要方法,它还支持自定义派生查询方法。

句法:

public interface MongoRepository 
extends PagingAndSortingRepository, QueryByExampleExecutor

在哪里

  • T:存储库管理的域类型(通常是实体/模型类名)
  • ID:存储库管理的实体的 ID 类型(通常是在 Entity/Model 类中创建的 @Id 的包装类)

插图:

public interface BookRepo extends MongoRepository {}

示例:我们将制作一个 使用 MongoRepository 管理 Book 实体的 Spring Boot 应用程序。数据保存在 MongoDB 数据库中。我们使用 RESTful 控制器。

第一步:参考这篇文章如何使用 IntelliJ IDEA 创建 Spring Boot 项目并创建一个 Spring Boot 项目。

第二步:添加以下依赖

  • 春季网络
  • MongoDB
  • 龙目岛
  • 开发工具

下面是pom.xml文件的完整代码。请检查您是否遗漏了什么。

XML


    4.0.0
    
        org.springframework.boot
        spring-boot-starter-parent
        2.6.0
         
    
    com.globallogic
    spring-mongodb
    0.0.1-SNAPSHOT
    spring-mongodb
    Demo project for Spring Boot
    
        11
    
    
        
            org.springframework.boot
            spring-boot-starter-data-mongodb
        
        
            org.springframework.boot
            spring-boot-starter-web
        
  
        
            org.springframework.boot
            spring-boot-devtools
            runtime
            true
        
        
            org.projectlombok
            lombok
            true
        
        
            org.springframework.boot
            spring-boot-starter-test
            test
        
    
  
    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
                
                    
                        
                            org.projectlombok
                            lombok
                        
                    
                
            
        
    
  


Java
// Java Program to illustrate Book File
  
// Importing required classes
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;
  
// Annotations
@Data
@NoArgsConstructor
@AllArgsConstructor
@Document(collection = "Book")
  
// Class
public class Book {
  
    // Attributes
    @Id private int id;
    private String bookName;
    private String authorName;
}


Java
// Java Program to Illustrate BookRepo File
  
import com.globallogic.spring.mongodb.model.Book;
import org.springframework.data.mongodb.repository.MongoRepository;
  
public interface BookRepo
    extends MongoRepository {
}


Java
import com.globallogic.spring.mongodb.model.Book;
import com.globallogic.spring.mongodb.repository.BookRepo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
  
import java.util.List;
  
// Annotation 
@RestController
  
// Class 
public class BookController {
  
    @Autowired
    private BookRepo repo;
  
    @PostMapping("/addBook")
    public String saveBook(@RequestBody Book book){
        repo.save(book);
        
        return "Added Successfully";
    }
  
    @GetMapping("/findAllBooks")
    public List getBooks() {
        
        return repo.findAll();
    }
  
    @DeleteMapping("/delete/{id}")
    public String deleteBook(@PathVariable int id){
        repo.deleteById(id);
        
        return "Deleted Successfully";
    }
  
}


第 3 步:创建 3 个包并在这些包中创建一些类和接口,如下图所示

  • 模型
  • 存储库
  • 控制器

第 4 步:在实体包内

在 Book 中创建一个简单的 POJO 类。 Java文件。

例子

Java

// Java Program to illustrate Book File
  
// Importing required classes
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;
  
// Annotations
@Data
@NoArgsConstructor
@AllArgsConstructor
@Document(collection = "Book")
  
// Class
public class Book {
  
    // Attributes
    @Id private int id;
    private String bookName;
    private String authorName;
}

第 5 步:在存储库包中

创建一个简单的接口并将接口命名为BookRepo 。正如我们上面讨论的那样,这个接口将扩展MongoRepository

例子

Java

// Java Program to Illustrate BookRepo File
  
import com.globallogic.spring.mongodb.model.Book;
import org.springframework.data.mongodb.repository.MongoRepository;
  
public interface BookRepo
    extends MongoRepository {
}

第 6 步:在控制器包内

在包中创建一个名为BookController的类。

Java

import com.globallogic.spring.mongodb.model.Book;
import com.globallogic.spring.mongodb.repository.BookRepo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
  
import java.util.List;
  
// Annotation 
@RestController
  
// Class 
public class BookController {
  
    @Autowired
    private BookRepo repo;
  
    @PostMapping("/addBook")
    public String saveBook(@RequestBody Book book){
        repo.save(book);
        
        return "Added Successfully";
    }
  
    @GetMapping("/findAllBooks")
    public List getBooks() {
        
        return repo.findAll();
    }
  
    @DeleteMapping("/delete/{id}")
    public String deleteBook(@PathVariable int id){
        repo.deleteById(id);
        
        return "Deleted Successfully";
    }
  
}

第 7 步:下面是 application.properties 文件的代码

server.port = 8989

# MongoDB Configuration
server.port:8989
spring.data.mongodb.host=localhost
spring.data.mongodb.port=27017
spring.data.mongodb.database=BookStore

第 8 步:在 MongoDB Compass 内部

转到您的 MongoDB Compass 并创建一个名为BookStore的数据库,并在该数据库中创建一个名为Book的集合,如下图所示

现在运行您的应用程序,让我们在 Postman 中测试端点,并参考我们的 MongoDB Compass。

在 Postman 中测试端点

端点 1: POST – http://localhost:8989/addBook

端点 2: GET - http://localhost:8989/findAllBooks

端点 3:删除 - http://localhost:8989/delete/1329

最后,MongoDB Compass 如下图所示,如下图所示: