クラス 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 class
QueryMethodValueEvaluationContextAccessor
についても認識しているため、ValueExpressionQueryRewriter.QueryExpressionEvaluator
インスタンスを作成できるValueExpressionQueryRewriter
の拡張。class
クエリ文字列を解析し、含まれる値式を識別し、バインドパラメーターに置き換え、それらのバインドパラメーターから値式にMap
SE を提供します。class
メソッドからのパラメーター情報とメソッド呼び出しからのパラメーター値に基づいて、ValueExpressionQueryRewriter.ParsedQuery
によって検出された値式を評価します。メソッドのサマリー
修飾子と型メソッド説明static ValueExpressionQueryRewriter
of
(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 インスタンス。