标签:public throw mes ima 文件 row mybatis源码 const ant
mybatis读取配置文件时都是通过xml来解析对应的配置。这里mybatis内部使用的是sax的解析方式,采用xpath的方式来查询xml中的数据。
关于xpath的解析方式这里自己手动来测试一个xml文件,对应的使用方法在mybatis源码中也有对应的实现
DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
//开启验证
documentBuilderFactory.setValidating(true);
documentBuilderFactory.setNamespaceAware(false);
documentBuilderFactory.setIgnoringComments(true);
documentBuilderFactory.setIgnoringElementContentWhitespace(false);
documentBuilderFactory.setCoalescing(false);
documentBuilderFactory.setExpandEntityReferences(true);
//创建DocumentBuilder
DocumentBuilder builder = documentBuilderFactory.newDocumentBuilder();
//设置异常处理对象
builder.setErrorHandler(new ErrorHandler() {
@Override
public void error(SAXParseException exception) throws SAXException {
throw exception;
}
@Override
public void fatalError(SAXParseException exception) throws SAXException {
throw exception;
}
@Override
public void warning(SAXParseException exception) throws SAXException {
}
});
//将文档加载到Document对象中
Document doc = builder.parse("src/main/resources/mybatis-config.xml");
XPathFactory xPathFactory = XPathFactory.newInstance();
XPath xpath = xPathFactory.newXPath();
NodeList result = (NodeList)xpath.evaluate("//property",doc, XPathConstants.NODESET);
System.out.println(result.item(1).getAttributes().getNamedItem("value"));
这是一个main方法中的代码片段,主要作用是读取mybatis-config.xml中的对应的数据库地址
<property name="url" value="jdbc:mysql://119.23.25.22:3306/fzan?characterEncoding=UTF-8"/>
这些类后面会说到。
先来看下XPathParser类,改类中的各个字段如下
private final Document document; //Document 对象
private boolean validation; //是否开启验证
private EntityResolver entityResolver; //用于加载本地DTD文件
private Properties variables;//mybatis-config.xml中<propteries>边间键值对集合
private XPath xpath;//xpath对象
document是xml解析后原始的一个Document对象,所以是一个final类型的。
然后是validation是一个bool类型的属性表示是否开启验证,默认情况下mybatis读取xml会联网加载dtd文件来校验mybatis的配置文件是否正确。但也不排除没有网络的情况,这样可以通过entityResolver来加载mybatis包中的离线dtd文档来校验。
EntityResolver是一个接口,其中XMLMApperEntityResolver就继承自该接口
标签:public throw mes ima 文件 row mybatis源码 const ant
原文地址:https://www.cnblogs.com/rw4y/p/12398236.html