如何使用StrSubstitutor和空变量后缀?

时间:2016-11-06 09:51:18

标签: java string apache-commons-lang apache-commons-lang3

我正在尝试使用Apache Commons Lang的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 个答案:

答案 0 :(得分:1)

在深入研究StrSubstitutor的代码后,我意识到使用StrSubstitutor / StrMatcher API无法完成。 由于Spring的NAmedParameterJdbcTemplate没有公开带有替换参数值的sql,我必须实现自己的sql参数替代。