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("删除成功");
         }
     
     }
相关文章
|
1月前
|
SQL Java 数据库连接
深入 MyBatis-Plus 插件:解锁高级数据库功能
Mybatis-Plus 提供了丰富的插件机制,这些插件可以帮助开发者更方便地扩展 Mybatis 的功能,提升开发效率、优化性能和实现一些常用的功能。
166 26
深入 MyBatis-Plus 插件:解锁高级数据库功能
|
15天前
|
SQL 测试技术 数据库
|
22天前
|
XML 数据库 数据格式
数据库 校验名称唯一性,用于新增和修改功能
数据库 校验名称唯一性,用于新增和修改功能
36 8
|
1月前
|
XML 数据库 数据格式
数据库 校验名称唯一性,用于新增和修改功能
数据库 校验名称唯一性,用于新增和修改功能
32 1
|
2月前
|
前端开发 Java 数据库连接
javamvc配置,增删改查,文件上传下载。
【10月更文挑战第4天】javamvc配置,增删改查,文件上传下载。
39 1
|
2月前
|
存储 NoSQL API
使用Py2neo进行Neo4j图数据库的增删改查操作
使用Py2neo进行Neo4j图数据库的增删改查操作
93 5
|
2月前
|
数据可视化 API PHP
低代码开发工具-学生管理系统-老师管理增删改查实现
低代码开发工具-学生管理系统-老师管理增删改查实现
38 5
|
1月前
|
XML 数据库 数据格式
数据库 校验名称唯一性,用于新增和修改功能
数据库 校验名称唯一性,用于新增和修改功能
24 0
|
3月前
|
SQL 关系型数据库 MySQL
学成在线笔记+踩坑(3)——【内容模块】课程分类查询、课程增改删、课程计划增删改查,统一异常处理+JSR303校验
课程分类查询、课程新增、统一异常处理、统一封装结果类、JSR303校验、修改课程、查询课程计划、新增/修改课程计划
学成在线笔记+踩坑(3)——【内容模块】课程分类查询、课程增改删、课程计划增删改查,统一异常处理+JSR303校验
|
2月前
|
JavaScript 前端开发 测试技术
[新手入门]todolist增删改查:vue3+ts版本!
【10月更文挑战第15天】[新手入门]todolist增删改查:vue3+ts版本!