一切从简的原则,尽可能显露出ibatis处理xml的骨架,剔除那些额外的处理部分。
只保留io读取和xml如何转换的东西。
Resource类是根据路径读取对应的InputStream文件的流
XmlParser类是根据对应的文件流解析xml
SqlMapConfigParser 是对xmlParser的类的封装,形成一个对外接口
public static void main(String[] args) throws IOException {
String resours = "SqlMapConfig.xml";
InputStream inputStream = Resource.getResourceAsStream(resours);
new SqlMapConfigParser().parse(inputStream);
}
SqlMapConfigParser类的内容
protected final XmlParser parser = new XmlParser();
public SqlMapConfigParser() {
}
public void parse(InputStream inputStream) {
try {
parser.parse(inputStream);
} catch (Exception e) {
throw new RuntimeException("Error occurred. Cause: " + e, e);
}
}
为了最大可能的实现源码,以及在学习后自己能够将其对应的功能复现。除设计模式和特定功能外,其他都删减掉。还原ibatis在某一个功能,它是如何处理的。这样更加具有学习意义。
源码地址: https://gitee.com/cnhellorui/some_source_code/tree/master/xmlParser