diff --git a/lab-27/lab-27-webflux-r2dbc/pom.xml b/lab-27/lab-27-webflux-r2dbc/pom.xml
index 4ef33eb1..6bb7a748 100644
--- a/lab-27/lab-27-webflux-r2dbc/pom.xml
+++ b/lab-27/lab-27-webflux-r2dbc/pom.xml
@@ -27,6 +27,7 @@
0.1.0.M2
+
com.github.jasync-sql
jasync-r2dbc-mysql
diff --git a/lab-27/lab-27-webflux-r2dbc/src/main/java/cn/iocoder/springboot/lab27/springwebflux/config/DatabaseConfiguration.java b/lab-27/lab-27-webflux-r2dbc/src/main/java/cn/iocoder/springboot/lab27/springwebflux/config/DatabaseConfiguration.java
index 21eb76d5..a1708377 100644
--- a/lab-27/lab-27-webflux-r2dbc/src/main/java/cn/iocoder/springboot/lab27/springwebflux/config/DatabaseConfiguration.java
+++ b/lab-27/lab-27-webflux-r2dbc/src/main/java/cn/iocoder/springboot/lab27/springwebflux/config/DatabaseConfiguration.java
@@ -6,13 +6,15 @@ import io.r2dbc.spi.ConnectionFactory;
import org.springframework.boot.autoconfigure.r2dbc.R2dbcProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+import org.springframework.data.r2dbc.connectionfactory.R2dbcTransactionManager;
+import org.springframework.transaction.ReactiveTransactionManager;
import org.springframework.transaction.annotation.EnableTransactionManagement;
import java.net.URI;
import java.net.URISyntaxException;
@Configuration
-@EnableTransactionManagement
+@EnableTransactionManagement // 开启事务的支持
public class DatabaseConfiguration {
@Bean
@@ -29,4 +31,9 @@ public class DatabaseConfiguration {
return new JasyncConnectionFactory(new MySQLConnectionFactory(configuration));
}
+ @Bean
+ public ReactiveTransactionManager transactionManager(R2dbcProperties properties) throws URISyntaxException {
+ return new R2dbcTransactionManager(this.connectionFactory(properties));
+ }
+
}
diff --git a/lab-27/lab-27-webflux-r2dbc/src/main/resources/application.yaml b/lab-27/lab-27-webflux-r2dbc/src/main/resources/application.yaml
index 85444302..11684d15 100644
--- a/lab-27/lab-27-webflux-r2dbc/src/main/resources/application.yaml
+++ b/lab-27/lab-27-webflux-r2dbc/src/main/resources/application.yaml
@@ -1,4 +1,5 @@
spring:
+ # R2DBC 配置,对应 R2dbcProperties 配置类
r2dbc:
url: mysql://47.112.193.81:3306/lab-27-webflux-r2dbc
username: lab-27-webflux-r2dbc
diff --git a/lab-27/lab-27-webflux-r2dbc/src/main/resources/sql/users.sql b/lab-27/lab-27-webflux-r2dbc/src/main/resources/sql/users.sql
new file mode 100644
index 00000000..02a9b8eb
--- /dev/null
+++ b/lab-27/lab-27-webflux-r2dbc/src/main/resources/sql/users.sql
@@ -0,0 +1,8 @@
+CREATE TABLE `users` (
+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '用户编号',
+ `username` varchar(64) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '账号',
+ `password` varchar(32) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '密码',
+ `create_time` datetime DEFAULT NULL COMMENT '创建时间',
+ PRIMARY KEY (`id`),
+ UNIQUE KEY `idx_username` (`username`)
+) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;
diff --git a/lab-27/lab-27-webflux-r2dbc/target/classes/application.yaml b/lab-27/lab-27-webflux-r2dbc/target/classes/application.yaml
index 85444302..11684d15 100644
--- a/lab-27/lab-27-webflux-r2dbc/target/classes/application.yaml
+++ b/lab-27/lab-27-webflux-r2dbc/target/classes/application.yaml
@@ -1,4 +1,5 @@
spring:
+ # R2DBC 配置,对应 R2dbcProperties 配置类
r2dbc:
url: mysql://47.112.193.81:3306/lab-27-webflux-r2dbc
username: lab-27-webflux-r2dbc