☰
Spring WebFlux 中的 R2DBC 开发流程
2026/10/23 3:02:11 网站建设 项目流程

一、概述

1、R2DBC 是什么

  • R2DBC(Reactive Relational Database Connectivity)是异步非阻塞、响应式的关系数据库标准(Spring WebFlux 专用)。R2DBC 查库立刻返回Mono/Flux,数据到了再回调,和 WebFlux 完美配合,让 WebFlux 能不阻塞地操作关系型数据库。
  • 传统 JDBC 是阻塞的,同步阻塞的关系数据库标准(Spring MVC 常用)。JDBC 查库时线程干等,等数据好了再返回。
  • JDBC、R2DBC 本身都不是数据库,只是访问数据库的规范。
  • R2DBC 是通用标准,支持 Postgres、MySQL、H2、SQL Server等多种关系型数据库,每种数据库都单独适配一套 R2DBC 驱动。

2、和 JPA 对比

JPA(Spring Data JPA)R2DBC
模式阻塞非阻塞
实体注解@Entity@Table
RepositoryJpaRepositoryR2dbcRepository
返回值User / ListMono / Flux
关系映射完善(@OneToMany 等)弱,不支持复杂关联
适用传统 MVC 项目WebFlux / 高并发

二、开发步骤

1、添加依赖(适配MySQL)

  • 项目的 pom.xml 中添加相关依赖(MySQL数据库):
  • 本示例是适配 MySQL 数据库,对应 MySQL 的驱动是r2dbc-mysql。
  • 如果匹配 PostgreSQL 数据库,则对应的驱动是r2dbc-postgresql。
  • 依赖库之间的调用关系:WebFlux代码 → Spring Data R2DBC → r2dbc-postgresql驱动 → Postgres数据库。
<dependencies><!--SpringWebFlux--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-webflux</artifactId></dependency><!--Lombok--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><!--R2DBC核心--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-r2dbc</artifactId></dependency><!--MySQLR2DBC驱动--><dependency><groupId>io.asyncer</groupId><artifactId>r2dbc-mysql</artifactId></dependency><!--PostgreSQL专属R2DBC驱动--><dependency><groupId>org.postgresql</groupId><artifactId>r2dbc-postgresql</artifactId></dependency></dependencies>

2、数据库中建表(Navicat工具)

  • 打开 Navicate 工具, 文件 -》新建连接 -》MySQL…,新建一个数据库连接 MySql;
  • 右键点击数据库连接 MySql, 新建一个数据库 r2dbc;
  • 在数据库中新建表 user,输入具体的字段名称、类型等相关信息。

  • 也可以用 SQL 语句建表,更快。打开数据库后,新建查询,输入下列的 SQL 语句,点击“运行”,执行后直接创建数据库、表及其内容。
-- 先建数据库 r2dbc(如果还没建)CREATEDATABASEIFNOTEXISTSr2dbcDEFAULTCHARACTERSETutf8mb4COLLATEutf8mb4_general_ci;-- 选中这个 r2dbc 数据库USEr2dbc;-- 建表 userCREATETABLEIFNOTEXISTSuser(idBIGINTPRIMARYKEYAUTO_INCREMENT,nameVARCHAR(100)NOTNULL,emailVARCHAR(100),ageINT);

3、配置 application.yml

  • 不同的数据库的 url 前缀是不同的,MySQL 是以r2dbc:mysql://开头,PostgreSQL 是以r2dbc:postgresql://开头。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询