- 官網(wǎng) https://docs.spring.io/spring-data/r2dbc/docs/1.1.9.RELEASE/reference/html/#r2dbc.repositories
- 依賴(lài):
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-r2dbc</artifactId>
<version>1.1.9.RELEASE</version>
</dependency>
實(shí)體類(lèi)id 注解 : 不是 javax.persistence.Id ,而是 org.springframework.data.annotation.Id
JPA 中的關(guān)系映射,如 @ManyToOne @OneToMany等,在R2DBC中不支持梆砸,所以遇到有關(guān)聯(lián)的時(shí)候晒屎,需要我們自己處理
不支持 類(lèi)似的JPA 中的Specifications分頁(yè)查詢(xún) ,使用 Specifications 來(lái)查詢(xún)分頁(yè)內(nèi)容,但是 R2DBC支持 Pageable分頁(yè)查詢(xún),比JPA稍微麻煩一些
啟用 Auditing: @EnableR2dbcAuditing
數(shù)據(jù)庫(kù)連接:
spring.r2dbc.url=r2dbc:postgresql://10.103.21.143:5450/數(shù)據(jù)庫(kù)名?schema=schema名
spring.r2dbc.username=
spring.r2dbc.passweord=
spring.r2dbc.pool.enabled=true
spring.r2dbc.pool.initial-size=1
spring.r2dbc.pool.max-size=5
spring.r2dbc.pool.min-idle=1
spring.r2dbc.pool.max-idle-time=30m
spring.r2dbc.pool.max-life-time=60000
spring.r2dbc.pool.validation-query=SELECT 1
- 多線程同時(shí)修改數(shù)據(jù)庫(kù)同一條數(shù)據(jù), 樂(lè)觀鎖version 失敗,需要重試( 是整個(gè)邏輯從頭再來(lái),不是重新保存數(shù)據(jù) ):
// 定義重試策略
RetryBackoffSpec retrySpec = Retry
.backoff(3, Duration.ofMillis(100))
.maxBackoff(java.time.Duration.ofSeconds(5))
.jitter(0.5);
// 在Mono上應(yīng)用重試策略
Mono<String> retryMono = mono.retryWhen(retrySpec).doOnError(e->
{
log.error("retry 3 times fail {}",e.getMasseage());
//重試失敗后的邏輯
}
);