首页 归档 关于 learn love 工具

mybatis 工具类替换占位符

在Mybatis中提供了大量实用的工具类,这些工具类不仅能用在Mybatis中,也可以把这些工具类拷贝出来,放到我们的项目中,方便开发。

GenericTokenParser

在Mybatis中,需要频繁的对XML进行解析,在解析的过程中GenericTokenParser绝对是出现频率最高的一个类.

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://blog.51cto.com/u_15651175/5540400
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