クラス ValueExpressionQueryRewriter
java.lang.ObjectSE
org.springframework.data.repository.query.ValueExpressionQueryRewriter
ValueExpressionQueryRewriter は、クエリ文字列内の値式を検出し、それをバインド変数に置き換えることができます。
解析プロセスの結果は、変換されたクエリ文字列を提供する ValueExpressionQueryRewriter.ParsedQuery です。代わりに、より強力な ValueExpressionQueryRewriter.EvaluatingValueExpressionQueryRewriter を生成する withEvaluationContextAccessor(QueryMethodValueEvaluationContextAccessor) を介して QueryMethodValueEvaluationContextAccessor を提供することもできます。
典型的な使用箇所は次のようになります
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);
- 導入:
- 3.3
- 作成者:
- Jens Schauder, Gerrit Meier, Mark Paluch
- 関連事項:
ネストされたクラスの要約
ネストされたクラス修飾子と型クラス説明static classQueryMethodValueEvaluationContextAccessorについても認識しているため、ValueExpressionQueryRewriter.QueryExpressionEvaluatorインスタンスを作成できるValueExpressionQueryRewriterの拡張。classクエリ文字列を解析し、含まれる値式を識別し、バインドパラメーターに置き換え、それらのバインドパラメーターから値式にMapSE を提供します。classメソッドからのパラメーター情報とメソッド呼び出しからのパラメーター値に基づいて、ValueExpressionQueryRewriter.ParsedQueryによって検出された値式を評価します。メソッドのサマリー
修飾子と型メソッド説明static ValueExpressionQueryRewriterof(ValueExpressionParser expressionParser, BiFunctionSE<IntegerSE, StringSE, StringSE> parameterNameSource, BiFunctionSE<StringSE, StringSE, StringSE> replacementSource) 指定されたValueExpressionParserと書き換え関数を使用して新しい ValueExpressionQueryRewriter を作成します。of(ValueExpressionDelegate delegate, BiFunctionSE<IntegerSE, StringSE, StringSE> parameterNameSource, BiFunctionSE<StringSE, StringSE, StringSE> replacementSource) 指定されたValueExpressionDelegateと書き換え関数を使用して新しい EvaluatingValueExpressionQueryRewriter を作成します。次のパターンを使用してvalue expressionsのクエリを解析します。現在の ZZT と指定されたQueryMethodValueEvaluationContextAccessorからValueExpressionQueryRewriter.EvaluatingValueExpressionQueryRewriterを作成します。
メソッドの詳細
of
public static ValueExpressionQueryRewriter of(ValueExpressionParser expressionParser, BiFunctionSE<IntegerSE, StringSE, StringSE> parameterNameSource, BiFunctionSE<StringSE, StringSE, StringSE> replacementSource) 指定されたValueExpressionParserと書き換え関数を使用して新しい ValueExpressionQueryRewriter を作成します。- パラメーター:
expressionParser- 使用する式パーサー。parameterNameSource- パラメーター名を生成する関数。通常は、(index, expression) -> "__some_placeholder_" + index形式の関数です。replacementSource- 関数を使用して置換を生成します。通常は、プレフィックスとパラメーター名を連結したもの (例:String::concat) です。- 戻り値:
- クエリを書き換え、解析された
ValueExpressionを抽出するための ValueExpressionQueryRewriter インスタンス。
of
public static ValueExpressionQueryRewriter.EvaluatingValueExpressionQueryRewriter of(ValueExpressionDelegate delegate, BiFunctionSE<IntegerSE, StringSE, StringSE> parameterNameSource, BiFunctionSE<StringSE, StringSE, StringSE> replacementSource) 指定されたValueExpressionDelegateと書き換え関数を使用して新しい EvaluatingValueExpressionQueryRewriter を作成します。- パラメーター:
delegate- 解析に使用し、EvaluationContextAccessor を取得する ValueExpressionDelegate。parameterNameSource- パラメーター名を生成する関数。通常は、(index, expression) -> "__some_placeholder_" + index形式の関数です。replacementSource- 関数を使用して置換を生成します。通常は、プレフィックスとパラメーター名を連結したもの (例:String::concat) です。- 戻り値:
- クエリを書き換え、解析された
ValueExpressionを抽出するための EvaluatingValueExpressionQueryRewriter インスタンス。 - 導入:
- 3.4
parse
次のパターンを使用してvalue expressionsのクエリを解析します。<prefix>#{<spel>} <prefix>${<property placeholder>}接頭辞は文字 ":" または "?" です。解析では、単一引用符または二重引用符で囲まれた引用符付きの文字列が尊重されます。
- パラメーター:
query- 上記の形式の値式を含むクエリ。null にすることはできません。- 戻り値:
- バインドパラメーターに置き換えられた値式を含むクエリと、バインドパラメーターから値式へのマップを利用できる
ValueExpressionQueryRewriter.ParsedQuery。null ではないことが保証されます。
withEvaluationContextAccessor
public ValueExpressionQueryRewriter.EvaluatingValueExpressionQueryRewriter withEvaluationContextAccessor(QueryMethodValueEvaluationContextAccessor accessor) 現在の ZZT と指定されたQueryMethodValueEvaluationContextAccessorからValueExpressionQueryRewriter.EvaluatingValueExpressionQueryRewriterを作成します。- パラメーター:
accessor- null であってはなりません。- 戻り値:
- 値式を書き換えて評価するための EvaluatingValueExpressionQueryRewriter インスタンス。