当前位置: 首页 > article >正文

Spring Boot教程之四十九:Spring Boot – MongoRepository 示例

Spring Boot – MongoRepository 示例

Spring Boot 建立在 Spring 之上,包含 Spring 的所有功能。由于其快速的生产就绪环境,使开发人员能够直接专注于逻辑,而不必费力配置和设置,因此如今它正成为开发人员的最爱。Spring Boot 是一个基于微服务的框架,在其中创建生产就绪的应用程序只需很少的时间。以下是 Spring Boot 的一些功能:

  • 它可以避免 Spring 中繁重的 XML 配置
  • 它可以轻松维护和创建 REST 端点
  • 它包括嵌入式 Tomcat 服务器
  • 部署非常容易,war和jar文件可以轻松部署在tomcat服务器中

MongoRepository介绍

MongoRepository 来管理 Spring Boot 应用程序中的数据

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

句法:

public interface MongoRepository<T,ID> extends PagingAndSortingRepository<T,ID>, QueryByExampleExecutor<T>

这里:

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

插图:

public interface BookRepo extends MongoRepository<Book, Integer> {}

方法

JpaRepository 中的一些最重要的方法如下

方法 1: saveAll():保存所有给定的实体。

句法:

<S extends T> List<S> saveAll(Iterable<S> entities)

参数:实体,不能为空,也不能包含空。

返回类型:已保存的实体;永远不会为空。返回的 Iterable 将具有与作为参数传递的 Iterable 相同的大小。

抛出异常:如果给定的实体或其某个实体为空,则抛出IllegalArgumentException 。

方法 2: insert():插入给定的实体。假设实例是新的,以便能够应用插入优化。使用返回的实例进行进一步的操作,因为保存操作可能已经完全改变了实体实例。 

句法:

<S extends T> S insert(S entity)

参数:entity – 不能为空

返回类型:已保存的实体

方法3. findAll():返回该类型的所有实例。

句法:

Iterable<T> findAll()

返回类型:所有实体

执行:

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

步骤1:使用IntelliJ IDEA创建Spring Boot项目,创建一个Spring Boot项目。 

第 2 步:添加以下依赖项

  • Spring Web
  • MongoDB
  • Lombok
  • DevTools

以下是pom.xml文件的完整代码。 

  • XML

<?xml version="1.0" encoding="UTF-8"?>

  

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">

    

    <modelVersion>4.0.0</modelVersion>

    

    <parent>

        <groupId>org.springframework.boot</groupId>

        <artifactId>spring-boot-starter-parent</artifactId>

        <version>2.6.0</version>

        <relativePath/> <!-- lookup parent from repository -->

    </parent>

    

    <groupId>com.globallogic</groupId>

    <artifactId>spring-mongodb</artifactId>

    <version>0.0.1-SNAPSHOT</version>

    <name>spring-mongodb</name>

    <description>Demo project for Spring Boot</description>

    <properties>

        <java.version>11</java.version>

    </properties>

    <dependencies>

        <dependency>

            <groupId>org.springframework.boot</groupId>

            <artifactId>spring-boot-starter-data-mongodb</artifactId>

        </dependency>

        <dependency>

            <groupId>org.springframework.boot</groupId>

            <artifactId>spring-boot-starter-web</artifactId>

        </dependency>

  

        <dependency>

            <groupId>org.springframework.boot</groupId>

            <artifactId>spring-boot-devtools</artifactId>

            <scope>runtime</scope>

            <optional>true</optional>

        </dependency>

        <dependency>

            <groupId>org.projectlombok</groupId>

            <artifactId>lombok</artifactId>

            <optional>true</optional>

        </dependency>

        <dependency>

            <groupId>org.springframework.boot</groupId>

            <artifactId>spring-boot-starter-test</artifactId>

            <scope>test</scope>

        </dependency>

    </dependencies>

  

    <build>

        <plugins>

            <plugin>

                <groupId>org.springframework.boot</groupId>

                <artifactId>spring-boot-maven-plugin</artifactId>

                <configuration>

                    <excludes>

                        <exclude>

                            <groupId>org.projectlombok</groupId>

                            <artifactId>lombok</artifactId>

                        </exclude>

                    </excludes>

                </configuration>

            </plugin>

        </plugins>

    </build>

  

</project>

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

  • model
  • repository
  • controller

注意

  • 绿色圆形图标“I”按钮是界面
  • 蓝色圆形图标“C”按钮属于类

步骤 4:实体包内部

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

  • 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<Book, Integer> {

}

步骤 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<Book> 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 如下图所示:


http://www.kler.cn/a/468535.html

相关文章:

  • 【HarmonyOS】鸿蒙应用如何进行页面横竖屏切换以及注意事项,自动切换横竖屏,监听横竖屏
  • STM32-笔记30-编程实现esp8266联网功能
  • QT上实现SVM进行数据分类
  • unity学习11:地图相关的一些基础
  • 苍穹外卖 项目记录 day03
  • 计算机网络--路由表的更新
  • 【数据结构与算法:二、线性表】
  • Zookeeper模式安装Kafka(含常规、容器两种安装方式)
  • SpringBoot的6种API请求参数读取方式
  • 【C++】P1428 小鱼比可爱
  • Unity开发2d游戏全套教程[入门案例]
  • 0-基于蚁群优化和带注意力机制的循环神经网络的新型混合算法用于解决旅行商问题(HAL science)(完)
  • 【数据结构与算法:五、树和二叉树】
  • Springboot使用Rabbitmq的延时队列+死信队列实现消息延期消费
  • 快速将索尼手机联系人导出为 HTML 文件
  • 2024 年度时序数据库 IoTDB 论文总结
  • From matplotl1b.path 1mport failed to import ImportError:numpy.core.multiarray
  • CentOS — 群组管理
  • NVIDIA DLI课程《NVIDIA NIM入门》——学习笔记
  • 【USRP】教程:在Macos M1(Apple芯片)上安装UHD驱动(最正确的安装方法)
  • 【C++】矩阵转置问题详解与优化
  • 机器学习导论笔记
  • Hadoop•配置网络克隆虚拟机
  • 学英语学压测:03jmeter组件-采样器、逻辑控制器
  • Go Ebiten小球弹性碰撞代码示例
  • 使用Dinky快速提交Flink operator任务