close

Spring Data R2DBC

Spring Data R2DBC是较大的Spring Data系列的一部分,可轻松实现基于R2DBC的存储库。R2DBC代表“反应式关系数据库连接”,该规范用于使用反应式驱动程序集成SQL数据库。Spring Data R2DBC对R2DBC应用了熟悉的Spring抽象和存储库支持。它使在响应式应用程序堆栈中构建使用关系数据访问技术的Spring驱动的应用程序更加容易。

Spring Data R2DBC旨在从概念上简化。为了实现此目的,它不提供ORM框架的缓存,延迟加载,后写或其他许多功能。这使Spring Data R2DBC成为一个简单,有限,自以为是的对象映射器。

Spring Data R2DBC允许一种实用的方法与您的数据库进行交互,R2dbcEntityTemplate作为应用程序的入口点。

通过选择数据库驱动程序并创建R2dbcEntityTemplate实例来开始使用:

PostgreSQL范例
PostgresqlConnectionFactory connectionFactory = new PostgresqlConnectionFactory(PostgresqlConnectionConfiguration.builder()
		.host(…)
		.database(…)
		.username(…)
		.password(…).build());

R2dbcEntityTemplate template = new R2dbcEntityTemplate(connectionFactory);

Mono<Integer> update = template.update(Person.class)
				.inTable("person_table")
				.matching(query(where("firstname").is("John")))
				.apply(update("age", 42));

Flux<Person> all = template.select(Person.class)
			.matching(query(where("firstname").is("John")
				.and("lastname").in("Doe", "White"))
			  .sort(by(desc("id"))))
			.all();
储存库示例
interface PersonRepository extends ReactiveCrudRepository<Person, String> {

	Flux<Person> findByFirstname(String firstname);

	@Modifying
	@Query("UPDATE person SET firstname = :firstname where lastname = :lastname")
	Mono<Integer> setFixedFirstnameFor(String firstname, String lastname);

	@Query("SELECT * FROM person WHERE lastname = :#{[0]}")
	Flux<Person> findByQueryWithExpression(String lastname);

}

客户端API提供了以下功能:

  • 使用在Spring Framework的R2DBC之上构建的Criteria API为映射的实体运行语句DatabaseClient

  • 使用本机语法的参数绑定。

  • 结果消耗:更新计数,未映射(Map<String, Object>),映射到实体,提取函数。

  • 使用@Query注释方法的反应性存储库。

SpringInitializr

快速启动您的项目

使用 Spring Initializr引导您的应用程序 。

文献资料

每个Spring项目都有自己的项目。它详细说明了如何使用项目功能以及使用它们可以实现的功能。
1.3.0 当前 GA 参考文件 API文件
1.3.1- 快照
1.2.9- 快照
1.2.8 GA 参考文件 API文件
1.1.10.BUILD-SNAPSHOT 快照
1.1.9.RELEASE GA 参考文件 API文件

可以尝试一些示例: