Browse Source

#20 - Polishing.

Rename Database.latestDialect() to defaultDialect(). Rename Dialect.returnGeneratedKeys() to Dialect.generatedKeysClause(). Simplify IndexBindMarkers. Create BindableOperation.bind(Statement, SettableValue) to reduce code duplicates. Rename BindSpecWrapper to BindSpecAdapter.

Original pull request: #24.
pull/1188/head
Jens Schauder 7 years ago committed by Mark Paluch
parent
commit
0aa623280f
  1. 2
      src/main/java/org/springframework/data/r2dbc/config/AbstractR2dbcConfiguration.java
  2. 11
      src/main/java/org/springframework/data/r2dbc/dialect/Database.java
  3. 10
      src/main/java/org/springframework/data/r2dbc/dialect/Dialect.java
  4. 2
      src/main/java/org/springframework/data/r2dbc/dialect/H2Dialect.java
  5. 7
      src/main/java/org/springframework/data/r2dbc/dialect/IndexedBindMarkers.java
  6. 14
      src/main/java/org/springframework/data/r2dbc/dialect/PostgresDialect.java
  7. 14
      src/main/java/org/springframework/data/r2dbc/dialect/SqlServerDialect.java
  8. 21
      src/main/java/org/springframework/data/r2dbc/function/BindableOperation.java
  9. 14
      src/main/java/org/springframework/data/r2dbc/function/DefaultDatabaseClient.java
  10. 2
      src/main/java/org/springframework/data/r2dbc/function/DefaultDatabaseClientBuilder.java
  11. 16
      src/main/java/org/springframework/data/r2dbc/function/DefaultReactiveDataAccessStrategy.java
  12. 36
      src/main/java/org/springframework/data/r2dbc/repository/support/BindSpecAdapter.java
  13. 18
      src/main/java/org/springframework/data/r2dbc/repository/support/SimpleR2dbcRepository.java
  14. 2
      src/test/java/org/springframework/data/r2dbc/repository/AbstractR2dbcRepositoryIntegrationTests.java
  15. 2
      src/test/java/org/springframework/data/r2dbc/testing/SqlServerTestSupport.java

2
src/main/java/org/springframework/data/r2dbc/config/AbstractR2dbcConfiguration.java

@ -68,7 +68,7 @@ public abstract class AbstractR2dbcConfiguration { @@ -68,7 +68,7 @@ public abstract class AbstractR2dbcConfiguration {
.orElseThrow(() -> new UnsupportedOperationException(
String.format("Cannot determine a dialect for %s using %s. Please provide a Dialect.",
connectionFactory.getMetadata().getName(), connectionFactory)))
.latestDialect();
.defaultDialect();
}
/**

11
src/main/java/org/springframework/data/r2dbc/dialect/Database.java

@ -15,6 +15,7 @@ import org.springframework.util.Assert; @@ -15,6 +15,7 @@ import org.springframework.util.Assert;
* if none was configured explicitly.
*
* @author Mark Paluch
* @author Jens Schauder
*/
public enum Database {
@ -25,7 +26,7 @@ public enum Database { @@ -25,7 +26,7 @@ public enum Database {
}
@Override
public Dialect latestDialect() {
public Dialect defaultDialect() {
return PostgresDialect.INSTANCE;
}
},
@ -37,7 +38,7 @@ public enum Database { @@ -37,7 +38,7 @@ public enum Database {
}
@Override
public Dialect latestDialect() {
public Dialect defaultDialect() {
return SqlServerDialect.INSTANCE;
}
},
@ -49,7 +50,7 @@ public enum Database { @@ -49,7 +50,7 @@ public enum Database {
}
@Override
public Dialect latestDialect() {
public Dialect defaultDialect() {
return H2Dialect.INSTANCE;
}
};
@ -63,7 +64,7 @@ public enum Database { @@ -63,7 +64,7 @@ public enum Database {
*/
public static Optional<Database> findDatabase(ConnectionFactory connectionFactory) {
Assert.notNull(connectionFactory, "ConnectionFactor must not be null!");
Assert.notNull(connectionFactory, "ConnectionFactory must not be null!");
ConnectionFactoryMetadata metadata = connectionFactory.getMetadata();
@ -87,6 +88,6 @@ public enum Database { @@ -87,6 +88,6 @@ public enum Database {
*
* @return the latest {@link Dialect} for the underlying database.
*/
public abstract Dialect latestDialect();
public abstract Dialect defaultDialect();
}

10
src/main/java/org/springframework/data/r2dbc/dialect/Dialect.java

@ -4,6 +4,7 @@ package org.springframework.data.r2dbc.dialect; @@ -4,6 +4,7 @@ package org.springframework.data.r2dbc.dialect;
* Represents a dialect that is implemented by a particular database.
*
* @author Mark Paluch
* @author Jens Schauder
*/
public interface Dialect {
@ -15,12 +16,15 @@ public interface Dialect { @@ -15,12 +16,15 @@ public interface Dialect {
BindMarkersFactory getBindMarkersFactory();
/**
* Returns the statement to include for returning generated keys. The returned query is directly appended to
* Returns the clause to include for returning generated keys. The returned query is directly appended to
* {@code INSERT} statements.
*
* @return the statement to include for returning generated keys.
* @return the clause to include for returning generated keys.
* @deprecated to be removed after upgrading to R2DBC 1.0M7 in favor of using the driver's direct support for
* retrieving generated keys.
*/
String returnGeneratedKeys();
@Deprecated
String generatedKeysClause();
/**
* Return the {@link LimitClause} used by this dialect.

2
src/main/java/org/springframework/data/r2dbc/dialect/H2Dialect.java

@ -17,7 +17,7 @@ public class H2Dialect extends PostgresDialect { @@ -17,7 +17,7 @@ public class H2Dialect extends PostgresDialect {
* @see org.springframework.data.r2dbc.dialect.Dialect#returnGeneratedKeys()
*/
@Override
public String returnGeneratedKeys() {
public String generatedKeysClause() {
return "";
}
}

7
src/main/java/org/springframework/data/r2dbc/dialect/IndexedBindMarkers.java

@ -9,6 +9,7 @@ import java.util.concurrent.atomic.AtomicIntegerFieldUpdater; @@ -9,6 +9,7 @@ import java.util.concurrent.atomic.AtomicIntegerFieldUpdater;
* prefix for bind markers to be represented within the query string.
*
* @author Mark Paluch
* @author Jens Schauder
*/
class IndexedBindMarkers implements BindMarkers {
@ -28,9 +29,9 @@ class IndexedBindMarkers implements BindMarkers { @@ -28,9 +29,9 @@ class IndexedBindMarkers implements BindMarkers {
* @param beginWith the first index to use.
*/
IndexedBindMarkers(String prefix, int beginWith) {
this.counter = beginWith;
this.counter = 0;
this.prefix = prefix;
this.offset = 0 - beginWith;
this.offset = beginWith;
}
/*
@ -42,7 +43,7 @@ class IndexedBindMarkers implements BindMarkers { @@ -42,7 +43,7 @@ class IndexedBindMarkers implements BindMarkers {
int index = COUNTER_INCREMENTER.getAndIncrement(this);
return new IndexedBindMarker(prefix + "" + index, index + offset);
return new IndexedBindMarker(prefix + "" + (index + offset), index);
}
/**

14
src/main/java/org/springframework/data/r2dbc/dialect/PostgresDialect.java

@ -16,7 +16,7 @@ public class PostgresDialect implements Dialect { @@ -16,7 +16,7 @@ public class PostgresDialect implements Dialect {
private static final LimitClause LIMIT_CLAUSE = new LimitClause() {
/*
/*
* (non-Javadoc)
* @see org.springframework.data.r2dbc.dialect.LimitClause#getClause(long, long)
*/
@ -25,7 +25,7 @@ public class PostgresDialect implements Dialect { @@ -25,7 +25,7 @@ public class PostgresDialect implements Dialect {
return String.format("LIMIT %d OFFSET %d", limit, offset);
}
/*
/*
* (non-Javadoc)
* @see org.springframework.data.r2dbc.dialect.LimitClause#getClause(long)
*/
@ -34,7 +34,7 @@ public class PostgresDialect implements Dialect { @@ -34,7 +34,7 @@ public class PostgresDialect implements Dialect {
return "LIMIT " + limit;
}
/*
/*
* (non-Javadoc)
* @see org.springframework.data.r2dbc.dialect.LimitClause#getClausePosition()
*/
@ -44,7 +44,7 @@ public class PostgresDialect implements Dialect { @@ -44,7 +44,7 @@ public class PostgresDialect implements Dialect {
}
};
/*
/*
* (non-Javadoc)
* @see org.springframework.data.r2dbc.dialect.Dialect#getBindMarkersFactory()
*/
@ -53,16 +53,16 @@ public class PostgresDialect implements Dialect { @@ -53,16 +53,16 @@ public class PostgresDialect implements Dialect {
return INDEXED;
}
/*
/*
* (non-Javadoc)
* @see org.springframework.data.r2dbc.dialect.Dialect#returnGeneratedKeys()
*/
@Override
public String returnGeneratedKeys() {
public String generatedKeysClause() {
return "RETURNING *";
}
/*
/*
* (non-Javadoc)
* @see org.springframework.data.r2dbc.dialect.Dialect#limit()
*/

14
src/main/java/org/springframework/data/r2dbc/dialect/SqlServerDialect.java

@ -17,7 +17,7 @@ public class SqlServerDialect implements Dialect { @@ -17,7 +17,7 @@ public class SqlServerDialect implements Dialect {
private static final LimitClause LIMIT_CLAUSE = new LimitClause() {
/*
/*
* (non-Javadoc)
* @see org.springframework.data.r2dbc.dialect.LimitClause#getClause(long)
*/
@ -26,7 +26,7 @@ public class SqlServerDialect implements Dialect { @@ -26,7 +26,7 @@ public class SqlServerDialect implements Dialect {
return "OFFSET 0 ROWS FETCH NEXT " + limit + " ROWS ONLY";
}
/*
/*
* (non-Javadoc)
* @see org.springframework.data.r2dbc.dialect.LimitClause#getClause(long, long)
*/
@ -35,7 +35,7 @@ public class SqlServerDialect implements Dialect { @@ -35,7 +35,7 @@ public class SqlServerDialect implements Dialect {
return String.format("OFFSET %d ROWS FETCH NEXT %d ROWS ONLY", offset, limit);
}
/*
/*
* (non-Javadoc)
* @see org.springframework.data.r2dbc.dialect.LimitClause#getClausePosition()
*/
@ -45,7 +45,7 @@ public class SqlServerDialect implements Dialect { @@ -45,7 +45,7 @@ public class SqlServerDialect implements Dialect {
}
};
/*
/*
* (non-Javadoc)
* @see org.springframework.data.r2dbc.dialect.Dialect#getBindMarkersFactory()
*/
@ -54,16 +54,16 @@ public class SqlServerDialect implements Dialect { @@ -54,16 +54,16 @@ public class SqlServerDialect implements Dialect {
return NAMED;
}
/*
/*
* (non-Javadoc)
* @see org.springframework.data.r2dbc.dialect.Dialect#returnGeneratedKeys()
*/
@Override
public String returnGeneratedKeys() {
public String generatedKeysClause() {
return "select SCOPE_IDENTITY() AS GENERATED_KEYS";
}
/*
/*
* (non-Javadoc)
* @see org.springframework.data.r2dbc.dialect.Dialect#limit()
*/

21
src/main/java/org/springframework/data/r2dbc/function/BindableOperation.java

@ -2,6 +2,8 @@ package org.springframework.data.r2dbc.function; @@ -2,6 +2,8 @@ package org.springframework.data.r2dbc.function;
import io.r2dbc.spi.Statement;
import org.springframework.data.r2dbc.function.convert.SettableValue;
/**
* Extension to {@link QueryOperation} for operations that allow parameter substitution by binding parameter values.
* {@link BindableOperation} is typically created with a {@link Set} of column names or parameter names that accept bind
@ -33,4 +35,23 @@ public interface BindableOperation extends QueryOperation { @@ -33,4 +35,23 @@ public interface BindableOperation extends QueryOperation {
* @see Statement#bindNull
*/
void bindNull(Statement<?> statement, String identifier, Class<?> valueType);
/**
* Bind a {@link SettableValue} to the {@link Statement} using the underlying binding strategy. Binds either the
* {@link SettableValue#getValue()} or {@literal null}, depending on whether the value is {@literal null}.
*
* @param statement the statement to bind the value to.
* @param value the settable value
* @see Statement#bind
* @see Statement#bindNull
*/
default void bind(Statement<?> statement, SettableValue value) {
if (value.getValue() == null) {
bindNull(statement, value.getIdentifier().toString(), value.getType());
} else {
bind(statement, value.getIdentifier().toString(), value.getValue());
}
}
}

14
src/main/java/org/springframework/data/r2dbc/function/DefaultDatabaseClient.java

@ -818,12 +818,7 @@ class DefaultDatabaseClient implements DatabaseClient, ConnectionAccessor { @@ -818,12 +818,7 @@ class DefaultDatabaseClient implements DatabaseClient, ConnectionAccessor {
Statement<?> statement = it.createStatement(sql);
byName.forEach((k, v) -> {
if (v.getValue() == null) {
bindableInsert.bindNull(statement, k, v.getType());
} else {
bindableInsert.bind(statement, k, v.getValue());
}
bindableInsert.bind(statement, v);
});
return statement;
};
@ -911,12 +906,7 @@ class DefaultDatabaseClient implements DatabaseClient, ConnectionAccessor { @@ -911,12 +906,7 @@ class DefaultDatabaseClient implements DatabaseClient, ConnectionAccessor {
Statement<?> statement = it.createStatement(sql);
for (SettableValue settable : insertValues) {
if (settable.getValue() == null) {
bindableInsert.bindNull(statement, settable.getIdentifier().toString(), settable.getType());
} else {
bindableInsert.bind(statement, settable.getIdentifier().toString(), settable.getValue());
}
bindableInsert.bind(statement, settable);
}
return statement;

2
src/main/java/org/springframework/data/r2dbc/function/DefaultDatabaseClientBuilder.java

@ -93,7 +93,7 @@ class DefaultDatabaseClientBuilder implements DatabaseClient.Builder { @@ -93,7 +93,7 @@ class DefaultDatabaseClientBuilder implements DatabaseClient.Builder {
Dialect dialect = Database.findDatabase(this.connectionFactory)
.orElseThrow(() -> new UnsupportedOperationException(
"Cannot determine a Dialect. Configure the dialect by providing DefaultReactiveDataAccessStrategy(Dialect)"))
.latestDialect();
.defaultDialect();
accessStrategy = new DefaultReactiveDataAccessStrategy(dialect);
}

16
src/main/java/org/springframework/data/r2dbc/function/DefaultReactiveDataAccessStrategy.java

@ -196,10 +196,10 @@ public class DefaultReactiveDataAccessStrategy implements ReactiveDataAccessStra @@ -196,10 +196,10 @@ public class DefaultReactiveDataAccessStrategy implements ReactiveDataAccessStra
@Override
public BindableOperation insertAndReturnGeneratedKeys(String table, Set<String> columns) {
return new DefaultBindableInsert(dialect.getBindMarkersFactory().create(), table, columns,
dialect.returnGeneratedKeys());
dialect.generatedKeysClause());
}
/*
/*
* (non-Javadoc)
* @see org.springframework.data.r2dbc.function.ReactiveDataAccessStrategy#select(java.lang.String, java.util.Set, org.springframework.data.domain.Sort, org.springframework.data.domain.Pageable)
*/
@ -283,7 +283,7 @@ public class DefaultReactiveDataAccessStrategy implements ReactiveDataAccessStra @@ -283,7 +283,7 @@ public class DefaultReactiveDataAccessStrategy implements ReactiveDataAccessStra
});
}
/*
/*
* (non-Javadoc)
* @see org.springframework.data.r2dbc.function.ReactiveDataAccessStrategy#selectByIdIn(java.lang.String, java.util.Set, java.lang.String)
*/
@ -303,7 +303,7 @@ public class DefaultReactiveDataAccessStrategy implements ReactiveDataAccessStra @@ -303,7 +303,7 @@ public class DefaultReactiveDataAccessStrategy implements ReactiveDataAccessStra
return new DefaultBindableUpdate(dialect.getBindMarkersFactory().create(), table, columns, idColumn);
}
/*
/*
* (non-Javadoc)
* @see org.springframework.data.r2dbc.function.ReactiveDataAccessStrategy#deleteById(java.lang.String, java.lang.String)
*/
@ -314,7 +314,7 @@ public class DefaultReactiveDataAccessStrategy implements ReactiveDataAccessStra @@ -314,7 +314,7 @@ public class DefaultReactiveDataAccessStrategy implements ReactiveDataAccessStra
marker -> String.format("DELETE FROM %s WHERE %s = %s", table, idColumn, marker.getPlaceholder()));
}
/*
/*
* (non-Javadoc)
* @see org.springframework.data.r2dbc.function.ReactiveDataAccessStrategy#deleteByIdIn(java.lang.String, java.lang.String)
*/
@ -442,7 +442,7 @@ public class DefaultReactiveDataAccessStrategy implements ReactiveDataAccessStra @@ -442,7 +442,7 @@ public class DefaultReactiveDataAccessStrategy implements ReactiveDataAccessStra
idMarker.bind(statement, value);
}
/*
/*
* (non-Javadoc)
* @see org.springframework.data.r2dbc.function.BindIdOperation#bindIds(io.r2dbc.spi.Statement, java.lang.Iterable)
*/
@ -503,7 +503,7 @@ public class DefaultReactiveDataAccessStrategy implements ReactiveDataAccessStra @@ -503,7 +503,7 @@ public class DefaultReactiveDataAccessStrategy implements ReactiveDataAccessStra
idMarker.bind(statement, value);
}
/*
/*
* (non-Javadoc)
* @see org.springframework.data.r2dbc.function.BindIdOperation#bindIds(io.r2dbc.spi.Statement, java.lang.Iterable)
*/
@ -570,7 +570,7 @@ public class DefaultReactiveDataAccessStrategy implements ReactiveDataAccessStra @@ -570,7 +570,7 @@ public class DefaultReactiveDataAccessStrategy implements ReactiveDataAccessStra
bindMarker.bind(statement, value);
}
/*
/*
* (non-Javadoc)
* @see org.springframework.data.r2dbc.function.BindIdOperation#bindIds(io.r2dbc.spi.Statement, java.lang.Iterable)
*/

36
src/main/java/org/springframework/data/r2dbc/repository/support/BindSpecWrapper.java → src/main/java/org/springframework/data/r2dbc/repository/support/BindSpecAdapter.java

@ -7,41 +7,41 @@ import org.reactivestreams.Publisher; @@ -7,41 +7,41 @@ import org.reactivestreams.Publisher;
import org.springframework.data.r2dbc.function.DatabaseClient.BindSpec;
/**
* Wrapper for {@link BindSpec} to be used with {@link org.springframework.data.r2dbc.dialect.BindMarker} binding.
* Adapter for {@link BindSpec} to be used with {@link org.springframework.data.r2dbc.dialect.BindMarker} binding.
* Binding parameters updates the {@link BindSpec}
*
* @param <S> type of the bind specification.
* @author Mark Paluch
*/
class BindSpecWrapper<S extends BindSpec<S>> implements Statement<BindSpecWrapper<S>> {
class BindSpecAdapter<S extends BindSpec<S>> implements Statement<BindSpecAdapter<S>> {
private S bindSpec;
private BindSpecWrapper(S bindSpec) {
private BindSpecAdapter(S bindSpec) {
this.bindSpec = bindSpec;
}
/**
* Create a new {@link BindSpecWrapper} for the given {@link BindSpec}.
* Create a new {@link BindSpecAdapter} for the given {@link BindSpec}.
*
* @param bindSpec the bind specification.
* @param <S> type of the bind spec to retain the type through {@link #getBoundOperation()}.
* @return {@link BindSpecWrapper} for the {@link BindSpec}.
* @return {@link BindSpecAdapter} for the {@link BindSpec}.
*/
public static <S extends BindSpec<S>> BindSpecWrapper<S> create(S bindSpec) {
return new BindSpecWrapper<>(bindSpec);
public static <S extends BindSpec<S>> BindSpecAdapter<S> create(S bindSpec) {
return new BindSpecAdapter<>(bindSpec);
}
/*
/*
* (non-Javadoc)
* @see io.r2dbc.spi.Statement#add()
*/
@Override
public BindSpecWrapper<S> add() {
public BindSpecAdapter<S> add() {
throw new UnsupportedOperationException();
}
/*
/*
* (non-Javadoc)
* @see io.r2dbc.spi.Statement#execute()
*/
@ -50,45 +50,45 @@ class BindSpecWrapper<S extends BindSpec<S>> implements Statement<BindSpecWrappe @@ -50,45 +50,45 @@ class BindSpecWrapper<S extends BindSpec<S>> implements Statement<BindSpecWrappe
throw new UnsupportedOperationException();
}
/*
/*
* (non-Javadoc)
* @see io.r2dbc.spi.Statement#bind(java.lang.Object, java.lang.Object)
*/
@Override
public BindSpecWrapper<S> bind(Object identifier, Object value) {
public BindSpecAdapter<S> bind(Object identifier, Object value) {
this.bindSpec = bindSpec.bind((String) identifier, value);
return this;
}
/*
/*
* (non-Javadoc)
* @see io.r2dbc.spi.Statement#bind(int, java.lang.Object)
*/
@Override
public BindSpecWrapper<S> bind(int index, Object value) {
public BindSpecAdapter<S> bind(int index, Object value) {
this.bindSpec = bindSpec.bind(index, value);
return this;
}
/*
/*
* (non-Javadoc)
* @see io.r2dbc.spi.Statement#bindNull(java.lang.Object, java.lang.Class)
*/
@Override
public BindSpecWrapper<S> bindNull(Object identifier, Class<?> type) {
public BindSpecAdapter<S> bindNull(Object identifier, Class<?> type) {
this.bindSpec = bindSpec.bindNull((String) identifier, type);
return this;
}
/*
/*
* (non-Javadoc)
* @see io.r2dbc.spi.Statement#bindNull(int, java.lang.Class)
*/
@Override
public BindSpecWrapper<S> bindNull(int index, Class<?> type) {
public BindSpecAdapter<S> bindNull(int index, Class<?> type) {
this.bindSpec = bindSpec.bindNull(index, type);
return this;

18
src/main/java/org/springframework/data/r2dbc/repository/support/SimpleR2dbcRepository.java

@ -78,7 +78,7 @@ public class SimpleR2dbcRepository<T, ID> implements ReactiveCrudRepository<T, I @@ -78,7 +78,7 @@ public class SimpleR2dbcRepository<T, ID> implements ReactiveCrudRepository<T, I
GenericExecuteSpec exec = databaseClient.execute().sql(update);
BindSpecWrapper<GenericExecuteSpec> wrapper = BindSpecWrapper.create(exec);
BindSpecAdapter<GenericExecuteSpec> wrapper = BindSpecAdapter.create(exec);
columns.forEach(bind(update, wrapper));
update.bindId(wrapper, id);
@ -123,7 +123,7 @@ public class SimpleR2dbcRepository<T, ID> implements ReactiveCrudRepository<T, I @@ -123,7 +123,7 @@ public class SimpleR2dbcRepository<T, ID> implements ReactiveCrudRepository<T, I
BindIdOperation select = accessStrategy.selectById(entity.getTableName(), columns, idColumnName);
GenericExecuteSpec sql = databaseClient.execute().sql(select);
BindSpecWrapper<GenericExecuteSpec> wrapper = BindSpecWrapper.create(sql);
BindSpecAdapter<GenericExecuteSpec> wrapper = BindSpecAdapter.create(sql);
select.bindId(wrapper, id);
return wrapper.getBoundOperation().as(entity.getJavaType()) //
@ -152,7 +152,7 @@ public class SimpleR2dbcRepository<T, ID> implements ReactiveCrudRepository<T, I @@ -152,7 +152,7 @@ public class SimpleR2dbcRepository<T, ID> implements ReactiveCrudRepository<T, I
idColumnName, 10);
GenericExecuteSpec sql = databaseClient.execute().sql(select);
BindSpecWrapper<GenericExecuteSpec> wrapper = BindSpecWrapper.create(sql);
BindSpecAdapter<GenericExecuteSpec> wrapper = BindSpecAdapter.create(sql);
select.bindId(wrapper, id);
return wrapper.getBoundOperation().as(entity.getJavaType()) //
@ -205,7 +205,7 @@ public class SimpleR2dbcRepository<T, ID> implements ReactiveCrudRepository<T, I @@ -205,7 +205,7 @@ public class SimpleR2dbcRepository<T, ID> implements ReactiveCrudRepository<T, I
String idColumnName = getIdColumnName();
BindIdOperation select = accessStrategy.selectByIdIn(entity.getTableName(), columns, idColumnName);
BindSpecWrapper<GenericExecuteSpec> wrapper = BindSpecWrapper.create(databaseClient.execute().sql(select));
BindSpecAdapter<GenericExecuteSpec> wrapper = BindSpecAdapter.create(databaseClient.execute().sql(select));
select.bindIds(wrapper, ids);
return wrapper.getBoundOperation().as(entity.getJavaType()).fetch().all();
@ -235,7 +235,7 @@ public class SimpleR2dbcRepository<T, ID> implements ReactiveCrudRepository<T, I @@ -235,7 +235,7 @@ public class SimpleR2dbcRepository<T, ID> implements ReactiveCrudRepository<T, I
Assert.notNull(id, "Id must not be null!");
BindIdOperation delete = accessStrategy.deleteById(entity.getTableName(), getIdColumnName());
BindSpecWrapper<GenericExecuteSpec> wrapper = BindSpecWrapper.create(databaseClient.execute().sql(delete));
BindSpecAdapter<GenericExecuteSpec> wrapper = BindSpecAdapter.create(databaseClient.execute().sql(delete));
delete.bindId(wrapper, id);
@ -262,7 +262,7 @@ public class SimpleR2dbcRepository<T, ID> implements ReactiveCrudRepository<T, I @@ -262,7 +262,7 @@ public class SimpleR2dbcRepository<T, ID> implements ReactiveCrudRepository<T, I
String idColumnName = getIdColumnName();
BindIdOperation delete = accessStrategy.deleteByIdIn(entity.getTableName(), idColumnName);
BindSpecWrapper<GenericExecuteSpec> wrapper = BindSpecWrapper.create(databaseClient.execute().sql(delete));
BindSpecAdapter<GenericExecuteSpec> wrapper = BindSpecAdapter.create(databaseClient.execute().sql(delete));
delete.bindIds(wrapper, ids);
return wrapper.getBoundOperation().as(entity.getJavaType()).fetch().rowsUpdated();
@ -324,11 +324,7 @@ public class SimpleR2dbcRepository<T, ID> implements ReactiveCrudRepository<T, I @@ -324,11 +324,7 @@ public class SimpleR2dbcRepository<T, ID> implements ReactiveCrudRepository<T, I
private BiConsumer<String, SettableValue> bind(BindableOperation operation, Statement<?> statement) {
return (k, v) -> {
if (v.getValue() == null) {
operation.bindNull(statement, k, v.getType());
} else {
operation.bind(statement, k, v.getValue());
}
operation.bind(statement, v);
};
}
}

2
src/test/java/org/springframework/data/r2dbc/repository/AbstractR2dbcRepositoryIntegrationTests.java

@ -161,7 +161,7 @@ public abstract class AbstractR2dbcRepositoryIntegrationTests extends R2dbcInteg @@ -161,7 +161,7 @@ public abstract class AbstractR2dbcRepositoryIntegrationTests extends R2dbcInteg
Database database = Database.findDatabase(createConnectionFactory()).get();
DefaultReactiveDataAccessStrategy dataAccessStrategy = new DefaultReactiveDataAccessStrategy(
database.latestDialect(), new BasicRelationalConverter(mappingContext));
database.defaultDialect(), new BasicRelationalConverter(mappingContext));
TransactionalDatabaseClient client = TransactionalDatabaseClient.builder()
.connectionFactory(createConnectionFactory()).dataAccessStrategy(dataAccessStrategy).build();

2
src/test/java/org/springframework/data/r2dbc/testing/SqlServerTestSupport.java

@ -47,7 +47,7 @@ public class SqlServerTestSupport { @@ -47,7 +47,7 @@ public class SqlServerTestSupport {
*/
private static ExternalDatabase local() {
return ProvidedDatabase.builder().hostname("localhost").port(1433).database("master").username("sa")
.password("my1.password").build();
.password("A_Str0ng_Required_Password").build();
}
/**

Loading…
Cancel
Save