41
41
* with bind variables.
42
42
* <p>
43
43
* Result of the parse process is a {@link ParsedQuery} which provides the transformed query string. Alternatively and
44
- * preferred one may provide a {@link QueryMethodEvaluationContextProvider } via
44
+ * preferred one may provide a {@link QueryMethodValueEvaluationContextAccessor } via
45
45
* {@link #withEvaluationContextAccessor(QueryMethodValueEvaluationContextAccessor)} which will yield the more powerful
46
46
* {@link EvaluatingValueExpressionQueryRewriter}.
47
47
* <p>
48
48
* Typical usage looks like
49
49
*
50
- * <pre>
51
- * <code>
52
- ExpressionQueryRewriter.ParsedQuery parsed = ExpressionQueryRewriter
53
- .of(valueExpressionParser, (counter, expression) -> String.format("__$synthetic$__%d", counter), String::concat)
54
- .withEvaluationContextProvider(evaluationContextProviderFactory);
55
-
56
- ExpressionQueryRewriter.QueryExpressionEvaluator evaluator = queryContext.parse(query, queryMethod.getParameters());
57
-
58
- evaluator.evaluate(objects).forEach(parameterMap::addValue);
59
- * </code>
50
+ * <pre class="code">
51
+ * ValueExpressionQueryRewriter.EvaluatingValueExpressionQueryRewriter rewriter = ValueExpressionQueryRewriter
52
+ * .of(valueExpressionParser, (counter, expression) -> String.format("__$synthetic$__%d", counter), String::concat)
53
+ * .withEvaluationContextAccessor(evaluationContextProviderFactory);
54
+ *
55
+ * ValueExpressionQueryRewriter.QueryExpressionEvaluator evaluator = rewriter.parse(query, queryMethod.getParameters());
56
+ *
57
+ * evaluator.evaluate(objects).forEach(parameterMap::addValue);
60
58
* </pre>
61
59
*
62
60
* @author Jens Schauder
@@ -74,16 +72,16 @@ public class ValueExpressionQueryRewriter {
74
72
/**
75
73
* A function from the index of a Value expression in a query and the actual Value Expression to the parameter name to
76
74
* be used in place of the Value Expression. A typical implementation is expected to look like
77
- * < code> (index, expression) -> "__some_placeholder_" + index</code>
75
+ * {@ code (index, expression) -> "__some_placeholder_" + index}.
78
76
*/
79
77
private final BiFunction <Integer , String , String > parameterNameSource ;
80
78
81
79
/**
82
80
* A function from a prefix used to demarcate a Value Expression in a query and a parameter name as returned from
83
81
* {@link #parameterNameSource} to a {@literal String} to be used as a replacement of the Value Expressions in the
84
82
* query. The returned value should normally be interpretable as a bind parameter by the underlying persistence
85
- * mechanism. A typical implementation is expected to look like < code> (prefix, name) -> prefix + name</code> or
86
- * < code> (prefix, name) -> "{" + name + "}"</code>
83
+ * mechanism. A typical implementation is expected to look like {@ code (prefix, name) -> prefix + name} or
84
+ * {@ code (prefix, name) -> "{" + name + "}"}.
87
85
*/
88
86
private final BiFunction <String , String , String > replacementSource ;
89
87
@@ -99,6 +97,17 @@ private ValueExpressionQueryRewriter(ValueExpressionParser expressionParser,
99
97
this .expressionParser = expressionParser ;
100
98
}
101
99
100
+ /**
101
+ * Creates a new {@link ValueExpressionQueryRewriter} using the given {@link ValueExpressionParser} and rewrite
102
+ * functions.
103
+ *
104
+ * @param expressionParser the expression parser to use.
105
+ * @param parameterNameSource function to generate parameter names. Typically, a function of the form
106
+ * {@code (index, expression) -> "__some_placeholder_" + index}.
107
+ * @param replacementSource function to generate replacements. Typically, a concatenation of the prefix and the
108
+ * parameter name such as {@code String::concat}.
109
+ * @return
110
+ */
102
111
public static ValueExpressionQueryRewriter of (ValueExpressionParser expressionParser ,
103
112
BiFunction <Integer , String , String > parameterNameSource , BiFunction <String , String , String > replacementSource ) {
104
113
return new ValueExpressionQueryRewriter (expressionParser , parameterNameSource , replacementSource );
0 commit comments