Class ValueExpressionQueryRewriter
java.lang.Object
org.springframework.data.repository.query.ValueExpressionQueryRewriter
- Direct Known Subclasses:
- ValueExpressionQueryRewriter.EvaluatingValueExpressionQueryRewriter
A ValueExpressionQueryRewriter is able to detect Value expressions in a query string and to replace them
 with bind variables.
 
 Result of the parse process is a ValueExpressionQueryRewriter.ParsedQuery which provides the transformed query string. Alternatively and
 preferred one may provide a QueryMethodValueEvaluationContextAccessor via
 withEvaluationContextAccessor(QueryMethodValueEvaluationContextAccessor) which will yield the more powerful
 ValueExpressionQueryRewriter.EvaluatingValueExpressionQueryRewriter.
 
Typical usage looks like
 ValueExpressionQueryRewriter.EvaluatingValueExpressionQueryRewriter rewriter = ValueExpressionQueryRewriter
                .of(valueExpressionParser, (counter, expression) -> String.format("__$synthetic$__%d", counter), String::concat)
                .withEvaluationContextAccessor(evaluationContextProviderFactory);
 ValueExpressionQueryRewriter.QueryExpressionEvaluator evaluator = rewriter.parse(query, queryMethod.getParameters());
 evaluator.evaluate(objects).forEach(parameterMap::addValue);
 - Since:
- 3.3
- Author:
- Jens Schauder, Gerrit Meier, Mark Paluch
- See Also:
- 
Nested Class SummaryNested ClassesModifier and TypeClassDescriptionstatic classAn extension ofValueExpressionQueryRewriterthat can createValueExpressionQueryRewriter.QueryExpressionEvaluatorinstances as it also knows about aQueryMethodValueEvaluationContextAccessor.classParses a query string, identifies the contained Value expressions, replaces them with bind parameters and offers aMapfrom those bind parameters to the value expression.classEvaluates Value expressions as detected byValueExpressionQueryRewriter.ParsedQuerybased on parameter information from a method and parameter values from a method call.
- 
Method SummaryModifier and TypeMethodDescriptionstatic ValueExpressionQueryRewriterof(ValueExpressionParser expressionParser, BiFunction<Integer, String, String> parameterNameSource, BiFunction<String, String, String> replacementSource) Creates a new ValueExpressionQueryRewriter using the givenValueExpressionParserand rewrite functions.of(ValueExpressionDelegate delegate, BiFunction<Integer, String, String> parameterNameSource, BiFunction<String, String, String> replacementSource) Creates a new EvaluatingValueExpressionQueryRewriter using the givenValueExpressionDelegateand rewrite functions.Parses the query forvalue expressionsusing the pattern:Creates aValueExpressionQueryRewriter.EvaluatingValueExpressionQueryRewriterfrom the current one and the givenQueryMethodValueEvaluationContextAccessor.
- 
Method Details- 
ofpublic static ValueExpressionQueryRewriter of(ValueExpressionParser expressionParser, BiFunction<Integer, String, String> parameterNameSource, BiFunction<String, String, String> replacementSource) Creates a new ValueExpressionQueryRewriter using the givenValueExpressionParserand rewrite functions.- Parameters:
- expressionParser- the expression parser to use.
- parameterNameSource- function to generate parameter names. Typically, a function of the form- (index, expression) -> "__some_placeholder_" + index.
- replacementSource- function to generate replacements. Typically, a concatenation of the prefix and the parameter name such as- String::concat.
- Returns:
- a ValueExpressionQueryRewriter instance to rewrite queries and extract parsed ValueExpressions.
 
- 
ofpublic static ValueExpressionQueryRewriter.EvaluatingValueExpressionQueryRewriter of(ValueExpressionDelegate delegate, BiFunction<Integer, String, String> parameterNameSource, BiFunction<String, String, String> replacementSource) Creates a new EvaluatingValueExpressionQueryRewriter using the givenValueExpressionDelegateand rewrite functions.- Parameters:
- delegate- the ValueExpressionDelegate to use for parsing and to obtain EvaluationContextAccessor from.
- parameterNameSource- function to generate parameter names. Typically, a function of the form- (index, expression) -> "__some_placeholder_" + index.
- replacementSource- function to generate replacements. Typically, a concatenation of the prefix and the parameter name such as- String::concat.
- Returns:
- a EvaluatingValueExpressionQueryRewriter instance to rewrite queries and extract parsed
         ValueExpressions.
- Since:
- 3.4
 
- 
parseParses the query forvalue expressionsusing the pattern:<prefix>#{<spel>} <prefix>${<property placeholder>}with prefix being the character ':' or '?'. Parsing honors quoted Strings enclosed in single or double quotation marks. - Parameters:
- query- a query containing Value Expressions in the format described above. Must not be null.
- Returns:
- A ValueExpressionQueryRewriter.ParsedQuerywhich makes the query with Value Expressions replaced by bind parameters and a map from bind parameter to Value Expression available. Guaranteed to be not null.
 
- 
withEvaluationContextAccessorpublic ValueExpressionQueryRewriter.EvaluatingValueExpressionQueryRewriter withEvaluationContextAccessor(QueryMethodValueEvaluationContextAccessor accessor) Creates aValueExpressionQueryRewriter.EvaluatingValueExpressionQueryRewriterfrom the current one and the givenQueryMethodValueEvaluationContextAccessor.- Parameters:
- accessor- must not be null.
- Returns:
- EvaluatingValueExpressionQueryRewriter instance to rewrite and evaluate Value Expressions.
 
 
-