Mybatis源代码中SqlSource描述XML文件或者Java注解配置的SQL信息,SqlNode描述动态SQL配置中的
在Mybatis源代码中SQL配置解析过程:
关于LanguageDriver的详细介绍可见Mybatis—LanguageDriver,这里以针对处理XML SQL信息配置的XMLLanguageDriver实现类为例,LanguageDriver接口定义了两个createSqlSource方法,这两个方法唯一的区别就在于入参的第二个参数,一个接口定义所需要的XNode类型的script,另一个接口定义则需要String类型的script。Mybatis之所以这么设计,是因为一个方法是用于处理通过XML配置的SQL信息,另一个方法则用于处理通过Java注解配置的SQL信息。
public interface LanguageDriver {
/**
* 用于处理通过XML配置的SQL信息
*/
SqlSource createSqlSource(
Configuration configuration,
XNode script, Class<?> parameterType);
/**
* 用于处理通过Java注解配置的SQL信息
*/
SqlSource createSqlSource(
Configuration configuration,
String script, Class<?> parameterType);
}
从XMLLanguageDriver源代码来看用于处理Java注解配置的SQL信息有两个处理分支,一是处理script文本中有