Support for binding values from a source Map

See gh-27282
This commit is contained in:
Juergen Hoeller
2023-08-16 10:55:26 +02:00
parent b8b3e6d20c
commit 0b99872704
3 changed files with 63 additions and 21 deletions

View File

@@ -16,7 +16,10 @@
package org.springframework.r2dbc.core;
import java.util.Map;
import io.r2dbc.spi.ConnectionFactory;
import io.r2dbc.spi.Parameters;
import io.r2dbc.spi.Result;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
@@ -93,6 +96,27 @@ abstract class AbstractDatabaseClientIntegrationTests {
.verifyComplete();
}
@Test
public void executeInsertWithMap() {
DatabaseClient databaseClient = DatabaseClient.create(connectionFactory);
databaseClient.sql("INSERT INTO legoset (id, name, manual) VALUES(:id, :name, :manual)")
.bindValues(Map.of("id", 42055,
"name", Parameter.from("SCHAUFELRADBAGGER"),
"manual", Parameters.in(Integer.class)))
.fetch().rowsUpdated()
.as(StepVerifier::create)
.expectNext(1L)
.verifyComplete();
databaseClient.sql("SELECT id FROM legoset")
.mapValue(Integer.class)
.first()
.as(StepVerifier::create)
.assertNext(actual -> assertThat(actual).isEqualTo(42055))
.verifyComplete();
}
@Test
public void executeInsertWithRecords() {
DatabaseClient databaseClient = DatabaseClient.create(connectionFactory);