在Mybatis中提供了大量实用的工具类,这些工具类不仅能用在Mybatis中,也可以把这些工具类拷贝出来,放到我们的项目中,方便开发。 在Mybatis中,需要频繁的对XML进行解析,在解析的过程中GenericTokenParser绝对是出现频率最高的一个类. https://blog.51cto.com/u_15651175/5540400GenericTokenParser
public static class VariableTokenHandler implements TokenHandler {
private final Map<String, String> variables;
VariableTokenHandler(Map<String, String> variables) {
this.variables = variables;
}
@Override
public String handleToken(String content) {
return variables.get(content);
}
}
static Stream<Arguments> shouldDemonstrateGenericTokenReplacementProvider() {
return Stream.of(arguments("James T Kirk reporting.", "#{first_name} #{initial} #{last_name} reporting.") );
}
@ParameterizedTest
@MethodSource("shouldDemonstrateGenericTokenReplacementProvider")
void shouldDemonstrateGenericTokenReplacement(String expected, String text) {
GenericTokenParser parser = new GenericTokenParser("#{", "}",
new VariableTokenHandler(new HashMap<>() {
private static final long serialVersionUID = 1L;
{
put("first_name", "James");
put("initial", "T");
put("last_name", "Kirk");
put("var{with}brace", "Hiya");
put("", "");
}
}));
System.out.println(parser.parse(text));
assertEquals(expected, parser.parse(text));
}
参考
https://github.com/mybatis/mybatis-3/blob/master/src/test/java/org/apache/ibatis/parsing/GenericTokenParserTest.java
https://ibit.tech/archives/mybatis-common-tools-class-script-sql-runner