Springboot WebFlux项目结合mongodb进行crud

第一步:创建项目

第二步:给mongodb插入数据

第三步:创建实体类

复制代码
package org.cyl.test02.entity;// Task.java
import lombok.Data;

@Data
public class Task {
    private String id;
    private String description;
}

第四步:创建Repository

引入依赖

复制代码
 <!-- Spring Data MongoDB -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-mongodb-reactive</artifactId>
        </dependency>

创建TaskRepository接口

复制代码
package org.cyl.test02.repository;// TaskRepository.java
import org.cyl.test02.entity.Task;
import org.springframework.data.repository.reactive.ReactiveCrudRepository;

public interface TaskRepository extends ReactiveCrudRepository<Task, String> {

}

第五步:创建Controller

复制代码
package org.cyl.test02.controller;// TaskController.java
import org.cyl.test02.entity.Task;
import org.cyl.test02.repository.TaskRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;

@RestController
@RequestMapping("/tasks")
public class TaskController {

    @Autowired
    private TaskRepository taskRepository;

    @GetMapping
    public Flux<Task> getAllTasks() {
        return taskRepository.findAll();
    }

    @GetMapping("/{id}")
    public Mono<Task> getTaskById(@PathVariable String id) {
        return taskRepository.findById(id);
    }

    @PostMapping
    public Mono<Task> createTask(@RequestBody Task task) {
        return taskRepository.save(task);
    }

    @PutMapping("/{id}")
    public Mono<Task> updateTask(@PathVariable String id, @RequestBody Task task) {
        task.setId(id);
        return taskRepository.save(task);
    }

    @DeleteMapping("/{id}")
    public Mono<Void> deleteTask(@PathVariable String id) {
        return taskRepository.deleteById(id);
    }
}

第六步:配置yml文件

复制代码
spring:
  data:
    mongodb:
      uri: mongodb://localhost:27017/student

运行结果

相关推荐
珠峰下的沙砾10 小时前
keycloak中对接oidc协议时设置prompt=login
java·服务器
IT_陈寒10 小时前
7个Vue 3.4新特性实战心得:从Composition到性能优化全解析
前端·人工智能·后端
BillKu11 小时前
Spring Boot 后端接收多个文件的方法
spring boot·后端·python
纤瘦的鲸鱼11 小时前
JUC 并发集合:高效处理多线程数据共享的利器
java·开发语言
hui函数11 小时前
订单后台管理系统-day07菜品模块
数据库·后端·python·flask
wr11 小时前
解决 NetMQ 创建Demo调试失败问题
后端
小菜全11 小时前
基于若依框架开发WebSocket接口
java·javascript·maven·mybatis·html5
瓯雅爱分享11 小时前
Java搭建高效后端,Vue打造友好前端,联合构建电子采购管理系统,实现采购流程电子化、自动化,涵盖采购全周期管理,功能完备,附详细可运行源码
java·mysql·vue·软件工程·源代码管理
太白IT记11 小时前
form表达和实体类通常有什么不同
java·状态模式