Spring认证中国教育管理中心-Spring Data R2DBC框架教程一

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: Spring认证中国教育管理中心-Spring Data R2DBC框架教程一

原标题:Spring认证中国教育管理中心-Spring Data R2DBC框架教程一(Spring中国教育管理中心)

  1. R2DBC 支持

R2DBC 包含广泛的功能:

Spring 配置支持@ConfigurationR2DBC 驱动程序实例的基于 Java 的类。
R2dbcEntityTemplate 作为实体绑定操作的中心类,在执行具有行和 POJO 之间集成对象映射的常见 R2DBC 操作时提高生产力。
功能丰富的对象映射与 Spring 的转换服务集成。
基于注释的映射元数据可扩展以支持其他元数据格式。
Repository 接口的自动实现,包括对自定义查询方法的支持。
对于大多数任务,您应该使用R2dbcEntityTemplate或存储库支持,它们都使用丰富的映射功能。 R2dbcEntityTemplate是寻找访问功能(例如临时 CRUD 操作)的地方。

13.1.入门
设置工作环境的一种简单方法是通过start.spring.io创建一个基于 Spring 的项目。这样做:

将以下内容添加到 pom.xml 文件dependencies元素:
io.r2dbcr2dbc-bom${r2dbc-releasetrain.version}pomimport org.springframework.dataspring-data-r2dbc1.4.0 io.r2dbcr2dbc-h2Arabba-SR10

Spring认证中国教育管理中心-Spring Data R2DBC框架教程一
将 pom.xml 中 Spring 的版本改为<spring-framework.version>5.3.13</spring-framework.version>
将 Maven 的 Spring Milestone 存储库的以下位置添加到您的位置pom.xml,使其与您的<dependencies/>元素处于同一级别:spring-milestoneSpring Maven MILESTONE Repositoryhttps://repo.spring.io/libs-milestone
存储库也可在此处浏览。

您可能还希望将日志记录级别设置为DEBUG以查看一些附加信息。为此,请编辑application.properties文件以具有以下内容:

logging.level.org.springframework.r2dbc=DEBUG
然后你可以,例如,创建一个Person类来持久化,如下所示:

public class Person {

private final String id;
private final String name;
private final int age;

public Person(String id, String name, int age) {

this.id = id;
this.name = name;
this.age = age;

}

public String getId() {

return id;

}

public String getName() {

return name;

}

public int getAge() {

return age;

}

@Override
public String toString() {

return "Person [id=" + id + ", name=" + name + ", age=" + age + "]";

}
}
Spring认证中国教育管理中心-Spring Data R2DBC框架教程一
接下来,您需要在您的数据库中创建一个表结构,如下所示:

CREATE TABLE person
(id VARCHAR(255) PRIMARY KEY,
name VARCHAR(255),
age INT);
您还需要一个主应用程序来运行,如下所示:

import io.r2dbc.spi.ConnectionFactories;
import io.r2dbc.spi.ConnectionFactory;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import reactor.test.StepVerifier;

import org.springframework.data.r2dbc.core.R2dbcEntityTemplate;

public class R2dbcApp {

private static final Log log = LogFactory.getLog(R2dbcApp.class);

public static void main(String[] args) {

ConnectionFactory connectionFactory = ConnectionFactories.get("r2dbc:h2:mem:///test?options=DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE");

R2dbcEntityTemplate template = new R2dbcEntityTemplate(connectionFactory);

template.getDatabaseClient().sql("CREATE TABLE person" +
    "(id VARCHAR(255) PRIMARY KEY," +
    "name VARCHAR(255)," +
    "age INT)")
  .fetch()
  .rowsUpdated()
  .as(StepVerifier::create)
  .expectNextCount(1)
  .verifyComplete();

template.insert(Person.class)
  .using(new Person("joe", "Joe", 34))
  .as(StepVerifier::create)
  .expectNextCount(1)
  .verifyComplete();

template.select(Person.class)
  .first()
  .doOnNext(it -> log.info(it))
  .as(StepVerifier::create)
  .expectNextCount(1)
  .verifyComplete();

}
}
Spring认证中国教育管理中心-Spring Data R2DBC框架教程一
运行主程序时,前面的示例会生成类似于以下内容的输出:

2018-11-28 10:47:03,893 DEBUG amework.core.r2dbc.DefaultDatabaseClient: 310 - Executing SQL statement [CREATE TABLE person
(id VARCHAR(255) PRIMARY KEY,
name VARCHAR(255),
age INT)]
2018-11-28 10:47:04,074 DEBUG amework.core.r2dbc.DefaultDatabaseClient: 908 - Executing SQL statement [INSERT INTO person (id, name, age) VALUES($1, $2, $3)]
2018-11-28 10:47:04,092 DEBUG amework.core.r2dbc.DefaultDatabaseClient: 575 - Executing SQL statement [SELECT id, name, age FROM person]
2018-11-28 10:47:04,436 INFO org.spring.r2dbc.example.R2dbcApp: 43 - Person [id='joe', name='Joe', age=34]
即使在这个简单的例子中,也有几件事需要注意:

您可以R2dbcEntityTemplate使用标准io.r2dbc.spi.ConnectionFactory对象在 Spring Data R2DBC ( ) 中创建中央助手类的实例。
映射器针对标准 POJO 对象工作,无需任何额外的元数据(尽管您可以选择提供该信息 — 请参阅此处。)。
映射约定可以使用字段访问。注意Person该类只有 getter。
如果构造函数参数名称与存储行的列名称匹配,则它们用于实例化对象。
13.2.示例库
有一个包含多个示例的GitHub 存储库,您可以下载并试用这些示例,以了解该库的工作原理。

13.3.使用 Spring 连接到关系数据库
使用关系数据库和 Spring 时的首要任务之一是
io.r2dbc.spi.ConnectionFactory使用 IoC 容器创建对象。确保使用支持的数据库和驱动程序。

13.3.1.ConnectionFactory使用基于 Java 的元数据注册实例
以下示例显示了使用基于 Java 的 bean 元数据注册 的实例的示例
io.r2dbc.spi.ConnectionFactory:

示例
54.io.r2dbc.spi.ConnectionFactory使用基于 Java 的 bean 元数据注册对象

@Configuration
public class ApplicationConfiguration extends AbstractR2dbcConfiguration {

@Override
@Bean
public ConnectionFactory connectionFactory() {

return …

}
}
这种方法允许您使用标准
io.r2dbc.spi.ConnectionFactory实例,容器使用 Spring 的AbstractR2dbcConfiguration.As 与ConnectionFactory直接注册实例相比,配置支持具有额外的优势,即还为容器提供了一个ExceptionTranslator实现,将 R2DBC 异常转换为 Spring 的可移植DataAccessException数据层次结构中的异常访问用@Repository注解注解的类。Spring的 DAO 支持特性中@Repository描述了这种层次结构和使用。

AbstractR2dbcConfiguration还 registers DatabaseClient,这是数据库交互和存储库实现所必需的。

13.3.2.R2DBC 驱动程序
Spring Data R2DBC 通过 R2DBC 的可插拔 SPI 机制支持驱动程序。您可以使用任何通过 Spring Data R2DBC 实现 R2DBC 规范的驱动程序。由于 Spring Data R2DBC 会对每个数据库的特定功能做出反应,因此它需要一个Dialect实现,否则您的应用程序将无法启动。Spring Data R2DBC 附带了以下驱动程序的方言实现:

H2 ( io.r2dbc:r2dbc-h2)
玛丽亚数据库( org.mariadb:r2dbc-mariadb)
Microsoft SQL Server ( io.r2dbc:r2dbc-mssql)
MySQL ( dev.miku:r2dbc-mysql)
jasync-sql MySQL ( com.github.jasync-sql:jasync-r2dbc-mysql)
Postgres ( io.r2dbc:r2dbc-postgresql)
甲骨文( com.oracle.database.r2dbc:oracle-r2dbc)
Spring Data R2DBC 通过检查ConnectionFactory和选择适当的数据库方言来对数据库细节做出反应。R2dbcDialect如果 Spring Data R2DBC 还不知道您使用的驱动程序,则需要自行配置。

方言由DialectResolverfrom a解析ConnectionFactory,通常通过检查
ConnectionFactoryMetadata. + 您可以R2dbcDialect通过注册一个org.springframework.data.r2dbc.dialect.DialectResolver$R2dbcDialectProvider通过META-INF/spring.factories. DialectResolver使用 Spring 的SpringFactoriesLoader.

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
24天前
|
数据采集 监控 前端开发
二级公立医院绩效考核系统源码,B/S架构,前后端分别基于Spring Boot和Avue框架
医院绩效管理系统通过与HIS系统的无缝对接,实现数据网络化采集、评价结果透明化管理及奖金分配自动化生成。系统涵盖科室和个人绩效考核、医疗质量考核、数据采集、绩效工资核算、收支核算、工作量统计、单项奖惩等功能,提升绩效评估的全面性、准确性和公正性。技术栈采用B/S架构,前后端分别基于Spring Boot和Avue框架。
|
1月前
|
Java API 数据库
Spring Boot框架因其简洁的配置、快速的启动特性及丰富的功能集而备受开发者青睐
本文通过在线图书管理系统案例,详细介绍如何使用Spring Boot构建RESTful API。从项目基础环境搭建、实体类与数据访问层定义,到业务逻辑实现和控制器编写,逐步展示了Spring Boot的简洁配置和强大功能。最后,通过Postman测试API,并介绍了如何添加安全性和异常处理,确保API的稳定性和安全性。
38 0
|
28天前
|
前端开发 Java 数据库连接
Spring 框架:Java 开发者的春天
Spring 框架是一个功能强大的开源框架,主要用于简化 Java 企业级应用的开发,由被称为“Spring 之父”的 Rod Johnson 于 2002 年提出并创立,并由Pivotal团队维护。
43 1
Spring 框架:Java 开发者的春天
|
21天前
|
JavaScript 安全 Java
如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个前后端分离的应用框架,实现动态路由和菜单功能
本文介绍了如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个前后端分离的应用框架,实现动态路由和菜单功能。首先,确保开发环境已安装必要的工具,然后创建并配置 Spring Boot 项目,包括添加依赖和配置 Spring Security。接着,创建后端 API 和前端项目,配置动态路由和菜单。最后,运行项目并分享实践心得,帮助开发者提高开发效率和应用的可维护性。
38 2
|
20天前
|
消息中间件 NoSQL Java
springboot整合常用中间件框架案例
该项目是Spring Boot集成整合案例,涵盖多种中间件的使用示例,每个案例项目使用最小依赖,便于直接应用到自己的项目中。包括MyBatis、Redis、MongoDB、MQ、ES等的整合示例。
79 1
|
28天前
|
Java 数据库连接 开发者
Spring 框架:Java 开发者的春天
【10月更文挑战第27天】Spring 框架由 Rod Johnson 在 2002 年创建,旨在解决 Java 企业级开发中的复杂性问题。它通过控制反转(IOC)和面向切面的编程(AOP)等核心机制,提供了轻量级的容器和丰富的功能,支持 Web 开发、数据访问等领域,显著提高了开发效率和应用的可维护性。Spring 拥有强大的社区支持和丰富的生态系统,是 Java 开发不可或缺的工具。
|
1月前
|
人工智能 开发框架 Java
总计 30 万奖金,Spring AI Alibaba 应用框架挑战赛开赛
Spring AI Alibaba 应用框架挑战赛邀请广大开发者参与开源项目的共建,助力项目快速发展,掌握 AI 应用开发模式。大赛分为《支持 Spring AI Alibaba 应用可视化调试与追踪本地工具》和《基于 Flow 的 AI 编排机制设计与实现》两个赛道,总计 30 万奖金。
|
2月前
|
SQL 监控 druid
springboot-druid数据源的配置方式及配置后台监控-自定义和导入stater(推荐-简单方便使用)两种方式配置druid数据源
这篇文章介绍了如何在Spring Boot项目中配置和监控Druid数据源,包括自定义配置和使用Spring Boot Starter两种方法。
|
1月前
|
人工智能 自然语言处理 前端开发
SpringBoot + 通义千问 + 自定义React组件:支持EventStream数据解析的技术实践
【10月更文挑战第7天】在现代Web开发中,集成多种技术栈以实现复杂的功能需求已成为常态。本文将详细介绍如何使用SpringBoot作为后端框架,结合阿里巴巴的通义千问(一个强大的自然语言处理服务),并通过自定义React组件来支持服务器发送事件(SSE, Server-Sent Events)的EventStream数据解析。这一组合不仅能够实现高效的实时通信,还能利用AI技术提升用户体验。
168 2
|
13天前
|
缓存 IDE Java
SpringBoot入门(7)- 配置热部署devtools工具
SpringBoot入门(7)- 配置热部署devtools工具
26 2
 SpringBoot入门(7)- 配置热部署devtools工具