Как я могу использовать StrSubstitutor с суффиксом пустой переменной?

Я пытаюсь использовать Apache Commons Lang's StrSubstitutor заменить переменные в строке, помеченной только с помощью префиксов, например, как именованные параметры, помеченные как : в запросе SQL.

Вот фрагмент кода, который я использую, который не работает.

import com.google.common.collect.ImmutableMap;
import org.apache.commons.lang3.text.StrMatcher;
import org.apache.commons.lang3.text.StrSubstitutor;

Map<String,String> m = ImmutableMap.of("a", 1);

StrSubstitutor strSubstitutor = new StrSubstitutor(m)
        .setVariablePrefix(":")
        .setVariableSuffix("");
System.out.println(strSubstitutor.replace("select a from t where a = :a"));
// expect select a from t where a = 1

Есть идеи как это сделать?

Я пытаюсь реализовать кастом StrMatcher но я все еще неудачен. Кто-нибудь делал это раньше и может поделиться своим опытом?

1 ответ

После глубокого изучения кода StrSubstitutor я понял, что это невозможно сделать с помощью API StrSubstitutor / StrMatcher. Так как Spring NAmedParameterJdbcTemplate не предоставляет sql с замененными значениями параметров, я должен был реализовать свой собственный заменитель параметров sql.

Другие вопросы по тегам