WebFlux 完成增删改查功能

简介: Spring WebFlux是Spring 5推出响应式/反应式Web框架,支持异步、非阻塞的请求,WebFlux提供了两种使用方式:注解式和函数式,本文演示注解式的使用方式。

WebFlux是一个基于Reactor异步、非阻塞的web框架。WebFlux可以运行在Netty, UndertowServlet 3.1以上的容器中

WebFlux并不能使接口的响应时间缩短,它仅仅能够提升吞吐量和伸缩性

WebFlux提供了两种使用方式:注解式(Annotated Controllers)和 函数式(Functional Endpoints

  • 注解式:和SpringMvc的注解一致,使用RestControllerGetMappingPostMapping等注解
  • 函数式:基于Lambda表达式,使用Function描述请求端点

本文演示基于注解的使用方式

示例

  1. 新建数据表

    CREATE TABLE `user` (
      `id` int(64) NOT NULL AUTO_INCREMENT,
      `name` varchar(255) DEFAULT NULL,
      `age` int(4) DEFAULT NULL,
      `sex` varchar(2) DEFAULT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
  2. 引入依赖

            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-webflux</artifactId>
            </dependency>
            <dependency>
                <groupId>dev.miku</groupId>
                <artifactId>r2dbc-mysql</artifactId>
                <version>0.8.2.RELEASE</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-data-r2dbc</artifactId>
            </dependency>
  3. 编写配置文件

    server:
      port: 8099
    spring:
      data:
        r2dbc:
          repositories:
            enabled: true
    
      r2dbc:
        url: r2dbc:mysql://**********:****/user?useUnicode=true&characterEncoding=UTF-8&useSSL=false
        username: ****
        password: ****
        pool:
          enabled: true
          max-size: 10
          initial-size: 10
          validation-query: select 1
  4. 创建实体类

    @Data
    @Table(value = "user")
    public class User {
        @Id
        private Integer id;
    
        private String name;
    
        private Integer age;
    
        private String sex;
    }
  5. 创建Repository

    public interface UserRepository extends R2dbcRepository<User, Integer> {
    }
  6. 创建Controller

     @RestController
     public class UserController {
     
         @Resource
         private UserRepository userRepository;
     
         @PostMapping("user")
         public Mono<Integer> createUser(@RequestBody User user){
     
             Mono<User> userMono = userRepository.save(user);
             return userMono.map(User::getId);
         }
     
         @GetMapping("user/{id}")
         public Mono<User> getUserById(@PathVariable("id") Integer id){
     
             Mono<User> userMono = userRepository.findById(id);
             return userMono;
         }
     
         @PutMapping("user")
         public Mono<String> updateUser(@RequestBody User user){
     
             userRepository.save(user);
             return Mono.just("修改成功");
         }
     
         @DeleteMapping("user/{id}")
         public Mono<String> delUser(@PathVariable("id") Integer id){
     
             userRepository.deleteById(id);
             return Mono.just("删除成功");
         }
     
     }
相关文章
|
16天前
|
SQL Java 数据库连接
深入 MyBatis-Plus 插件:解锁高级数据库功能
Mybatis-Plus 提供了丰富的插件机制,这些插件可以帮助开发者更方便地扩展 Mybatis 的功能,提升开发效率、优化性能和实现一些常用的功能。
98 26
深入 MyBatis-Plus 插件:解锁高级数据库功能
|
19天前
|
XML 数据库 数据格式
数据库 校验名称唯一性,用于新增和修改功能
数据库 校验名称唯一性,用于新增和修改功能
32 1
|
1月前
|
前端开发 Java 数据库连接
javamvc配置,增删改查,文件上传下载。
【10月更文挑战第4天】javamvc配置,增删改查,文件上传下载。
37 1
|
1月前
|
存储 NoSQL API
使用Py2neo进行Neo4j图数据库的增删改查操作
使用Py2neo进行Neo4j图数据库的增删改查操作
61 5
|
1月前
|
数据可视化 API PHP
低代码开发工具-学生管理系统-老师管理增删改查实现
低代码开发工具-学生管理系统-老师管理增删改查实现
32 5
|
21天前
|
XML 数据库 数据格式
数据库 校验名称唯一性,用于新增和修改功能
数据库 校验名称唯一性,用于新增和修改功能
21 0
|
2月前
|
SQL 关系型数据库 MySQL
学成在线笔记+踩坑(3)——【内容模块】课程分类查询、课程增改删、课程计划增删改查,统一异常处理+JSR303校验
课程分类查询、课程新增、统一异常处理、统一封装结果类、JSR303校验、修改课程、查询课程计划、新增/修改课程计划
学成在线笔记+踩坑(3)——【内容模块】课程分类查询、课程增改删、课程计划增删改查,统一异常处理+JSR303校验
|
28天前
|
JavaScript 前端开发 测试技术
[新手入门]todolist增删改查:vue3+ts版本!
【10月更文挑战第15天】[新手入门]todolist增删改查:vue3+ts版本!
|
2月前
|
XML 数据库 数据格式
数据库 校验名称唯一性,用于新增和修改功能
数据库 校验名称唯一性,用于新增和修改功能
54 1
|
2月前
|
SQL 关系型数据库 MySQL
ThinkPHP6 连接使用数据库,增删改查,find,select,save,insert,insertAll,insertGetId,delete,update方法的用法
本文介绍了在ThinkPHP6框架中如何连接和使用数据库进行增删改查操作。内容包括配置数据库连接信息、使用Db类进行原生MySQL查询、find方法查询单个数据、select方法查询数据集、save方法添加数据、insertAll方法批量添加数据、insertGetId方法添加数据并返回自增主键、delete方法删除数据和update方法更新数据。此外,还说明了如何通过数据库配置文件进行数据库连接信息的配置,并强调了在使用Db类时需要先将其引入。
ThinkPHP6 连接使用数据库,增删改查,find,select,save,insert,insertAll,insertGetId,delete,update方法的用法