From f0b95c51c4b6ab0ceea0a2d32cd99f5a9c41bb0e Mon Sep 17 00:00:00 2001 From: michaelin007 Date: Mon, 29 Jan 2024 03:51:28 +0000 Subject: [PATCH 1/5] https://jira.baeldung.com/browse/BAEL-5116 --- .../configuration/R2DBCConfiguration.java | 4 + .../java/com/baeldung/r2dbc/model/Player.java | 11 +- ...pplicationRdbcTemplateIntegrationTest.java | 101 ++++++++++++++++++ 3 files changed, 114 insertions(+), 2 deletions(-) create mode 100644 spring-reactive-modules/spring-reactive-data/src/test/java/com/baeldung/r2dbc/R2dbcApplicationRdbcTemplateIntegrationTest.java diff --git a/spring-reactive-modules/spring-reactive-data/src/main/java/com/baeldung/r2dbc/configuration/R2DBCConfiguration.java b/spring-reactive-modules/spring-reactive-data/src/main/java/com/baeldung/r2dbc/configuration/R2DBCConfiguration.java index 54f06d9c6c..dab5509499 100644 --- a/spring-reactive-modules/spring-reactive-data/src/main/java/com/baeldung/r2dbc/configuration/R2DBCConfiguration.java +++ b/spring-reactive-modules/spring-reactive-data/src/main/java/com/baeldung/r2dbc/configuration/R2DBCConfiguration.java @@ -2,6 +2,10 @@ package com.baeldung.r2dbc.configuration; import io.r2dbc.h2.H2ConnectionConfiguration; import io.r2dbc.h2.H2ConnectionFactory; +import io.r2dbc.spi.Connection; +import io.r2dbc.spi.ConnectionFactory; +import io.r2dbc.spi.ConnectionFactoryMetadata; +import org.reactivestreams.Publisher; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.r2dbc.config.AbstractR2dbcConfiguration; diff --git a/spring-reactive-modules/spring-reactive-data/src/main/java/com/baeldung/r2dbc/model/Player.java b/spring-reactive-modules/spring-reactive-data/src/main/java/com/baeldung/r2dbc/model/Player.java index 1e28cb3d07..c66b4bc469 100644 --- a/spring-reactive-modules/spring-reactive-data/src/main/java/com/baeldung/r2dbc/model/Player.java +++ b/spring-reactive-modules/spring-reactive-data/src/main/java/com/baeldung/r2dbc/model/Player.java @@ -7,12 +7,19 @@ import org.springframework.data.annotation.Id; import org.springframework.data.relational.core.mapping.Table; @Data -@NoArgsConstructor -@AllArgsConstructor @Table public class Player { @Id Integer id; String name; Integer age; + + public Player() { + } + + public Player(Integer id, String name, Integer age) { + this.id = id; + this.name = name; + this.age = age; + } } \ No newline at end of file diff --git a/spring-reactive-modules/spring-reactive-data/src/test/java/com/baeldung/r2dbc/R2dbcApplicationRdbcTemplateIntegrationTest.java b/spring-reactive-modules/spring-reactive-data/src/test/java/com/baeldung/r2dbc/R2dbcApplicationRdbcTemplateIntegrationTest.java new file mode 100644 index 0000000000..286187aac5 --- /dev/null +++ b/spring-reactive-modules/spring-reactive-data/src/test/java/com/baeldung/r2dbc/R2dbcApplicationRdbcTemplateIntegrationTest.java @@ -0,0 +1,101 @@ +package com.baeldung.r2dbc; + +import com.baeldung.r2dbc.configuration.R2DBCConfiguration; +import com.baeldung.r2dbc.model.Player; +import com.baeldung.r2dbc.repository.PlayerRepository; +import io.r2dbc.h2.H2ConnectionFactory; +import io.r2dbc.spi.ConnectionFactories; +import io.r2dbc.spi.ConnectionFactory; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.data.r2dbc.core.R2dbcEntityTemplate; +import org.springframework.data.relational.core.query.Query; +import org.springframework.r2dbc.core.DatabaseClient; +import org.springframework.test.context.junit4.SpringRunner; +import reactor.core.publisher.Flux; +import reactor.core.publisher.Hooks; +import reactor.core.publisher.Mono; +import reactor.test.StepVerifier; + +import java.util.Arrays; +import java.util.List; + +import static org.springframework.data.relational.core.query.Criteria.where; +import static org.springframework.data.relational.core.query.Query.query; + +@RunWith(SpringRunner.class) +@SpringBootTest(classes = R2DBCConfiguration.class) +public class R2dbcApplicationRdbcTemplateIntegrationTest { + + @Autowired + PlayerRepository playerRepository; + + @Autowired + DatabaseClient client; + + @Autowired + H2ConnectionFactory factory; + + ConnectionFactory connectionFactory = ConnectionFactories.get("r2dbc:h2:mem:///testdb?options=DB_CLOSE_DELAY=-1;TRACE_LEVEL_FILE=4;USER=sa;PASSWORD="); + + R2dbcEntityTemplate template = new R2dbcEntityTemplate(connectionFactory); + + @Before + public void setup() { + + Hooks.onOperatorDebug(); + + List statements = Arrays.asList("DROP TABLE IF EXISTS player;", "CREATE table player (id INT AUTO_INCREMENT NOT NULL, name VARCHAR2, age INT NOT NULL);"); + + statements.forEach(it -> client.sql(it) + .fetch() + .rowsUpdated() + .as(StepVerifier::create) + .expectNextCount(1) + .verifyComplete()); + + } + + @Test + public void whenSearchForSaka_thenOneIsExpected() { + + insertPlayers(); + + template.select(Player.class) + .matching(query(where("name").is("Saka"))) + .one() + .as(StepVerifier::create) + .expectNextCount(1) + .verifyComplete(); + } + + @Test + public void whenInsertThreePlayers_thenThreeAreExpected() { + + insertPlayers(); + + template.select(Player.class) + .all() + .as(StepVerifier::create) + .expectNextCount(3) + .verifyComplete(); + } + + public void insertPlayers() { + List players = Arrays.asList(new Player(null, "Saka", 22), new Player(null, "Pedro", 32), new Player(null, "Mbappé", 20)); + + for (Player player : players) { + template.insert(Player.class) + .using(player) + .as(StepVerifier::create) + .expectNextCount(1) + .verifyComplete(); + + } + + } + +} From 18879fd4911d100f2b5b1b2b339a410c41f215b7 Mon Sep 17 00:00:00 2001 From: michaelin007 Date: Mon, 29 Jan 2024 04:03:29 +0000 Subject: [PATCH 2/5] https://jira.baeldung.com/browse/BAEL-5116 --- .../main/java/com/baeldung/r2dbc/model/Player.java | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/spring-reactive-modules/spring-reactive-data/src/main/java/com/baeldung/r2dbc/model/Player.java b/spring-reactive-modules/spring-reactive-data/src/main/java/com/baeldung/r2dbc/model/Player.java index c66b4bc469..1e28cb3d07 100644 --- a/spring-reactive-modules/spring-reactive-data/src/main/java/com/baeldung/r2dbc/model/Player.java +++ b/spring-reactive-modules/spring-reactive-data/src/main/java/com/baeldung/r2dbc/model/Player.java @@ -7,19 +7,12 @@ import org.springframework.data.annotation.Id; import org.springframework.data.relational.core.mapping.Table; @Data +@NoArgsConstructor +@AllArgsConstructor @Table public class Player { @Id Integer id; String name; Integer age; - - public Player() { - } - - public Player(Integer id, String name, Integer age) { - this.id = id; - this.name = name; - this.age = age; - } } \ No newline at end of file From d660390f22e45d9982df8dfffd31986363047344 Mon Sep 17 00:00:00 2001 From: michaelin007 Date: Tue, 30 Jan 2024 06:35:28 +0000 Subject: [PATCH 3/5] Spring Boot and R2DBC --- ...2dbcApplicationRdbcTemplateIntegrationTest.java | 14 +------------- 1 file changed, 1 insertion(+), 13 deletions(-) diff --git a/spring-reactive-modules/spring-reactive-data/src/test/java/com/baeldung/r2dbc/R2dbcApplicationRdbcTemplateIntegrationTest.java b/spring-reactive-modules/spring-reactive-data/src/test/java/com/baeldung/r2dbc/R2dbcApplicationRdbcTemplateIntegrationTest.java index 286187aac5..913e38c346 100644 --- a/spring-reactive-modules/spring-reactive-data/src/test/java/com/baeldung/r2dbc/R2dbcApplicationRdbcTemplateIntegrationTest.java +++ b/spring-reactive-modules/spring-reactive-data/src/test/java/com/baeldung/r2dbc/R2dbcApplicationRdbcTemplateIntegrationTest.java @@ -1,9 +1,6 @@ package com.baeldung.r2dbc; -import com.baeldung.r2dbc.configuration.R2DBCConfiguration; import com.baeldung.r2dbc.model.Player; -import com.baeldung.r2dbc.repository.PlayerRepository; -import io.r2dbc.h2.H2ConnectionFactory; import io.r2dbc.spi.ConnectionFactories; import io.r2dbc.spi.ConnectionFactory; import org.junit.Before; @@ -12,12 +9,9 @@ import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.data.r2dbc.core.R2dbcEntityTemplate; -import org.springframework.data.relational.core.query.Query; import org.springframework.r2dbc.core.DatabaseClient; import org.springframework.test.context.junit4.SpringRunner; -import reactor.core.publisher.Flux; import reactor.core.publisher.Hooks; -import reactor.core.publisher.Mono; import reactor.test.StepVerifier; import java.util.Arrays; @@ -27,18 +21,12 @@ import static org.springframework.data.relational.core.query.Criteria.where; import static org.springframework.data.relational.core.query.Query.query; @RunWith(SpringRunner.class) -@SpringBootTest(classes = R2DBCConfiguration.class) +@SpringBootTest public class R2dbcApplicationRdbcTemplateIntegrationTest { - @Autowired - PlayerRepository playerRepository; - @Autowired DatabaseClient client; - @Autowired - H2ConnectionFactory factory; - ConnectionFactory connectionFactory = ConnectionFactories.get("r2dbc:h2:mem:///testdb?options=DB_CLOSE_DELAY=-1;TRACE_LEVEL_FILE=4;USER=sa;PASSWORD="); R2dbcEntityTemplate template = new R2dbcEntityTemplate(connectionFactory); From 970dd965ccd0045548240d754188ce4a36347fde Mon Sep 17 00:00:00 2001 From: michaelin007 Date: Wed, 31 Jan 2024 19:40:03 +0000 Subject: [PATCH 4/5] Spring Boot and R2DBC --- .../com/baeldung/r2dbc/configuration/R2DBCConfiguration.java | 4 ---- .../r2dbc/R2dbcApplicationRdbcTemplateIntegrationTest.java | 1 + 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/spring-reactive-modules/spring-reactive-data/src/main/java/com/baeldung/r2dbc/configuration/R2DBCConfiguration.java b/spring-reactive-modules/spring-reactive-data/src/main/java/com/baeldung/r2dbc/configuration/R2DBCConfiguration.java index dab5509499..54f06d9c6c 100644 --- a/spring-reactive-modules/spring-reactive-data/src/main/java/com/baeldung/r2dbc/configuration/R2DBCConfiguration.java +++ b/spring-reactive-modules/spring-reactive-data/src/main/java/com/baeldung/r2dbc/configuration/R2DBCConfiguration.java @@ -2,10 +2,6 @@ package com.baeldung.r2dbc.configuration; import io.r2dbc.h2.H2ConnectionConfiguration; import io.r2dbc.h2.H2ConnectionFactory; -import io.r2dbc.spi.Connection; -import io.r2dbc.spi.ConnectionFactory; -import io.r2dbc.spi.ConnectionFactoryMetadata; -import org.reactivestreams.Publisher; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.r2dbc.config.AbstractR2dbcConfiguration; diff --git a/spring-reactive-modules/spring-reactive-data/src/test/java/com/baeldung/r2dbc/R2dbcApplicationRdbcTemplateIntegrationTest.java b/spring-reactive-modules/spring-reactive-data/src/test/java/com/baeldung/r2dbc/R2dbcApplicationRdbcTemplateIntegrationTest.java index 913e38c346..194d3e263f 100644 --- a/spring-reactive-modules/spring-reactive-data/src/test/java/com/baeldung/r2dbc/R2dbcApplicationRdbcTemplateIntegrationTest.java +++ b/spring-reactive-modules/spring-reactive-data/src/test/java/com/baeldung/r2dbc/R2dbcApplicationRdbcTemplateIntegrationTest.java @@ -52,6 +52,7 @@ public class R2dbcApplicationRdbcTemplateIntegrationTest { insertPlayers(); + template.select(Player.class) .matching(query(where("name").is("Saka"))) .one() From fd61c0769a7fc52b35281e60b2fd8a7df95db7cb Mon Sep 17 00:00:00 2001 From: michaelin007 Date: Thu, 1 Feb 2024 06:48:29 +0000 Subject: [PATCH 5/5] Spring Boot and R2DBC --- .../r2dbc/R2dbcApplicationRdbcTemplateIntegrationTest.java | 1 - 1 file changed, 1 deletion(-) diff --git a/spring-reactive-modules/spring-reactive-data/src/test/java/com/baeldung/r2dbc/R2dbcApplicationRdbcTemplateIntegrationTest.java b/spring-reactive-modules/spring-reactive-data/src/test/java/com/baeldung/r2dbc/R2dbcApplicationRdbcTemplateIntegrationTest.java index 194d3e263f..913e38c346 100644 --- a/spring-reactive-modules/spring-reactive-data/src/test/java/com/baeldung/r2dbc/R2dbcApplicationRdbcTemplateIntegrationTest.java +++ b/spring-reactive-modules/spring-reactive-data/src/test/java/com/baeldung/r2dbc/R2dbcApplicationRdbcTemplateIntegrationTest.java @@ -52,7 +52,6 @@ public class R2dbcApplicationRdbcTemplateIntegrationTest { insertPlayers(); - template.select(Player.class) .matching(query(where("name").is("Saka"))) .one()