Browse Source

Polishing.

Original pull request #1869
pull/1863/head
Jens Schauder 1 year ago
parent
commit
b006923f0d
No known key found for this signature in database
GPG Key ID: 74F6C554AE971567
  1. 11
      spring-data-jdbc/src/main/java/org/springframework/data/jdbc/core/convert/QueryMapper.java
  2. 1
      spring-data-jdbc/src/main/java/org/springframework/data/jdbc/core/convert/SqlParametersFactory.java
  3. 6
      spring-data-jdbc/src/test/java/org/springframework/data/jdbc/mybatis/MyBatisCustomizingNamespaceHsqlIntegrationTests.java
  4. 5
      spring-data-relational/src/main/java/org/springframework/data/relational/core/conversion/RelationalConverter.java
  5. 4
      spring-data-relational/src/main/java/org/springframework/data/relational/core/mapping/BasicRelationalPersistentProperty.java

11
spring-data-jdbc/src/main/java/org/springframework/data/jdbc/core/convert/QueryMapper.java

@ -32,7 +32,6 @@ import org.springframework.data.mapping.PropertyPath;
import org.springframework.data.mapping.PropertyReferenceException; import org.springframework.data.mapping.PropertyReferenceException;
import org.springframework.data.mapping.context.InvalidPersistentPropertyPath; import org.springframework.data.mapping.context.InvalidPersistentPropertyPath;
import org.springframework.data.mapping.context.MappingContext; import org.springframework.data.mapping.context.MappingContext;
import org.springframework.data.relational.core.dialect.Dialect;
import org.springframework.data.relational.core.mapping.RelationalPersistentEntity; import org.springframework.data.relational.core.mapping.RelationalPersistentEntity;
import org.springframework.data.relational.core.mapping.RelationalPersistentProperty; import org.springframework.data.relational.core.mapping.RelationalPersistentProperty;
import org.springframework.data.relational.core.query.CriteriaDefinition; import org.springframework.data.relational.core.query.CriteriaDefinition;
@ -66,7 +65,7 @@ public class QueryMapper {
* *
* @param converter must not be {@literal null}. * @param converter must not be {@literal null}.
*/ */
public QueryMapper( JdbcConverter converter) { public QueryMapper(JdbcConverter converter) {
Assert.notNull(converter, "JdbcConverter must not be null"); Assert.notNull(converter, "JdbcConverter must not be null");
@ -90,8 +89,7 @@ public class QueryMapper {
SqlSort.validate(order); SqlSort.validate(order);
OrderByField simpleOrderByField = createSimpleOrderByField(table, entity, order); OrderByField simpleOrderByField = createSimpleOrderByField(table, entity, order);
OrderByField orderBy = simpleOrderByField OrderByField orderBy = simpleOrderByField.withNullHandling(order.getNullHandling());
.withNullHandling(order.getNullHandling());
mappedOrder.add(order.isAscending() ? orderBy.asc() : orderBy.desc()); mappedOrder.add(order.isAscending() ? orderBy.asc() : orderBy.desc());
} }
@ -285,7 +283,7 @@ public class QueryMapper {
SQLType sqlType; SQLType sqlType;
Comparator comparator = criteria.getComparator(); Comparator comparator = criteria.getComparator();
if (criteria.getValue()instanceof JdbcValue settableValue) { if (criteria.getValue() instanceof JdbcValue settableValue) {
mappedValue = convertValue(comparator, settableValue.getValue(), propertyField.getTypeHint()); mappedValue = convertValue(comparator, settableValue.getValue(), propertyField.getTypeHint());
sqlType = getTypeHint(mappedValue, actualType.getType(), settableValue); sqlType = getTypeHint(mappedValue, actualType.getType(), settableValue);
@ -424,7 +422,8 @@ public class QueryMapper {
@Nullable @Nullable
private Object convertValue(Comparator comparator, @Nullable Object value, TypeInformation<?> typeHint) { private Object convertValue(Comparator comparator, @Nullable Object value, TypeInformation<?> typeHint) {
if ((Comparator.IN.equals(comparator) || Comparator.NOT_IN.equals(comparator)) && value instanceof Collection<?> collection && !collection.isEmpty()) { if ((Comparator.IN.equals(comparator) || Comparator.NOT_IN.equals(comparator))
&& value instanceof Collection<?> collection && !collection.isEmpty()) {
Collection<Object> mapped = new ArrayList<>(collection.size()); Collection<Object> mapped = new ArrayList<>(collection.size());

1
spring-data-jdbc/src/main/java/org/springframework/data/jdbc/core/convert/SqlParametersFactory.java

@ -26,7 +26,6 @@ import org.springframework.data.jdbc.support.JdbcUtil;
import org.springframework.data.mapping.PersistentProperty; import org.springframework.data.mapping.PersistentProperty;
import org.springframework.data.mapping.PersistentPropertyAccessor; import org.springframework.data.mapping.PersistentPropertyAccessor;
import org.springframework.data.relational.core.conversion.IdValueSource; import org.springframework.data.relational.core.conversion.IdValueSource;
import org.springframework.data.relational.core.dialect.Dialect;
import org.springframework.data.relational.core.mapping.RelationalMappingContext; import org.springframework.data.relational.core.mapping.RelationalMappingContext;
import org.springframework.data.relational.core.mapping.RelationalPersistentEntity; import org.springframework.data.relational.core.mapping.RelationalPersistentEntity;
import org.springframework.data.relational.core.mapping.RelationalPersistentProperty; import org.springframework.data.relational.core.mapping.RelationalPersistentProperty;

6
spring-data-jdbc/src/test/java/org/springframework/data/jdbc/mybatis/MyBatisCustomizingNamespaceHsqlIntegrationTests.java

@ -25,7 +25,6 @@ import org.apache.ibatis.session.Configuration;
import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactory;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mybatis.spring.SqlSessionFactoryBean; import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.SqlSessionTemplate; import org.mybatis.spring.SqlSessionTemplate;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@ -42,14 +41,9 @@ import org.springframework.data.jdbc.testing.EnabledOnDatabase;
import org.springframework.data.jdbc.testing.IntegrationTest; import org.springframework.data.jdbc.testing.IntegrationTest;
import org.springframework.data.jdbc.testing.TestClass; import org.springframework.data.jdbc.testing.TestClass;
import org.springframework.data.jdbc.testing.TestConfiguration; import org.springframework.data.jdbc.testing.TestConfiguration;
import org.springframework.data.relational.core.dialect.HsqlDbDialect;
import org.springframework.data.relational.core.mapping.RelationalMappingContext; import org.springframework.data.relational.core.mapping.RelationalMappingContext;
import org.springframework.data.repository.CrudRepository; import org.springframework.data.repository.CrudRepository;
import org.springframework.jdbc.datasource.embedded.EmbeddedDatabase; import org.springframework.jdbc.datasource.embedded.EmbeddedDatabase;
import org.springframework.test.context.ActiveProfiles;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit.jupiter.SpringExtension;
import org.springframework.transaction.annotation.Transactional;
/** /**
* Tests the integration for customizing the namespace with Mybatis. * Tests the integration for customizing the namespace with Mybatis.

5
spring-data-relational/src/main/java/org/springframework/data/relational/core/conversion/RelationalConverter.java

@ -15,16 +15,12 @@
*/ */
package org.springframework.data.relational.core.conversion; package org.springframework.data.relational.core.conversion;
import java.util.function.Function;
import org.springframework.core.convert.ConversionService; import org.springframework.core.convert.ConversionService;
import org.springframework.data.mapping.Parameter;
import org.springframework.data.mapping.PersistentEntity; import org.springframework.data.mapping.PersistentEntity;
import org.springframework.data.mapping.PersistentPropertyAccessor; import org.springframework.data.mapping.PersistentPropertyAccessor;
import org.springframework.data.mapping.PersistentPropertyPathAccessor; import org.springframework.data.mapping.PersistentPropertyPathAccessor;
import org.springframework.data.mapping.context.MappingContext; import org.springframework.data.mapping.context.MappingContext;
import org.springframework.data.mapping.model.EntityInstantiators; import org.springframework.data.mapping.model.EntityInstantiators;
import org.springframework.data.mapping.model.ParameterValueProvider;
import org.springframework.data.projection.EntityProjection; import org.springframework.data.projection.EntityProjection;
import org.springframework.data.projection.EntityProjectionIntrospector; import org.springframework.data.projection.EntityProjectionIntrospector;
import org.springframework.data.relational.core.mapping.RelationalPersistentEntity; import org.springframework.data.relational.core.mapping.RelationalPersistentEntity;
@ -127,5 +123,4 @@ public interface RelationalConverter {
@Nullable @Nullable
Object writeValue(@Nullable Object value, TypeInformation<?> type); Object writeValue(@Nullable Object value, TypeInformation<?> type);
} }

4
spring-data-relational/src/main/java/org/springframework/data/relational/core/mapping/BasicRelationalPersistentProperty.java

@ -53,7 +53,6 @@ public class BasicRelationalPersistentProperty extends AnnotationBasedPersistent
private final boolean hasExplicitColumnName; private final boolean hasExplicitColumnName;
private final @Nullable Expression columnNameExpression; private final @Nullable Expression columnNameExpression;
private final Lazy<Optional<SqlIdentifier>> collectionIdColumnName; private final Lazy<Optional<SqlIdentifier>> collectionIdColumnName;
private final @Nullable Expression collectionIdColumnNameExpression;
private final Lazy<SqlIdentifier> collectionKeyColumnName; private final Lazy<SqlIdentifier> collectionKeyColumnName;
private final @Nullable Expression collectionKeyColumnNameExpression; private final @Nullable Expression collectionKeyColumnNameExpression;
private final boolean isEmbedded; private final boolean isEmbedded;
@ -98,8 +97,6 @@ public class BasicRelationalPersistentProperty extends AnnotationBasedPersistent
collectionIdColumnName = Lazy.of(() -> Optional.of(createSqlIdentifier(mappedCollection.idColumn()))); collectionIdColumnName = Lazy.of(() -> Optional.of(createSqlIdentifier(mappedCollection.idColumn())));
} }
this.collectionIdColumnNameExpression = detectExpression(mappedCollection.idColumn());
collectionKeyColumnName = Lazy.of( collectionKeyColumnName = Lazy.of(
() -> StringUtils.hasText(mappedCollection.keyColumn()) ? createSqlIdentifier(mappedCollection.keyColumn()) () -> StringUtils.hasText(mappedCollection.keyColumn()) ? createSqlIdentifier(mappedCollection.keyColumn())
: createDerivedSqlIdentifier(namingStrategy.getKeyColumn(this))); : createDerivedSqlIdentifier(namingStrategy.getKeyColumn(this)));
@ -107,7 +104,6 @@ public class BasicRelationalPersistentProperty extends AnnotationBasedPersistent
this.collectionKeyColumnNameExpression = detectExpression(mappedCollection.keyColumn()); this.collectionKeyColumnNameExpression = detectExpression(mappedCollection.keyColumn());
} else { } else {
this.collectionIdColumnNameExpression = null;
this.collectionKeyColumnNameExpression = null; this.collectionKeyColumnNameExpression = null;
} }

Loading…
Cancel
Save