Как я могу использовать 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.