这一节,主要是
sqlElement(context.evalNodes("/mapper/sql"))
源码如下:
private void sqlElement(List<XNode> list) throws Exception {
//从这里开始看
if (configuration.getDatabaseId() != null) {
sqlElement(list, configuration.getDatabaseId());
}
sqlElement(list, null);
}
断点位置在于
stop in org.apache.ibatis.session.Configuration.getDatabaseId
其中
sqlElement(list, configuration.getDatabaseId());
的解析过程如下:
private void sqlElement(List<XNode> list, String requiredDatabaseId) throws Exception {
// 开始遍历每1个子节点
for (XNode context : list) {
// 获取databaseId属性
String databaseId = context.getStringAttribute("databaseId");
// 获取id属性
String id = context.getStringAttribute("id");
// 添加上namespace构成完整路径
id = builderAssistant.applyCurrentNamespace(id, false);
// 继续处理
if (databaseIdMatchesCurrent(id, databaseId, requiredDatabaseId)) {
// 添加到这里
sqlFragments.put(id, context);
//添加进去
}
//结束
}
//结束
}
然后,继续处理
sqlElement(list, null);
这个一般不处理。