sqlFragment
可以翻译为sql片段,它的存在价值在于可复用sql片段,避免到处重复编写。
sqlFragment的解析过程
sqlFragment存储于Configuration内部。
protected final Map<String, XNode> sqlFragments = new StrictMap<XNode>("XML fragments parsed from previous mappers");
解析sqlFragment的过程非常简单。
org.apache.ibatis.builder.xml.XMLMapperBuilder.configurationElement(XNode)方法部分源码。
private void sqlElement(List<XNode> list, String requiredDatabaseId) throws Exception {
for (XNode context : list) {
String databaseId = context.getStringAttribute("databaseId");
String id = context.getStringAttribute("id");
id = builderAssistant.applyCurrentNamespace(id, false);
if (databaseIdMatchesCurrent(id, databaseId, requiredDatabaseId)) {
sqlFragments.put(id, context);
}
}
}
解析include标签的过程
org.apache.ibatis.builder.xml.XMLStatementBuilder.parseStatementNode()方法源码。
//解析导入的SQL片段