MyBatisXPathParser解析器使用范例详解

MyBatisXPathParser解析器使用范例详解

MyBatis是优秀的开源数据库框架,本菜鸟抱着学习的态度,通过《MyBatis技术内幕》一书来进行MyBatis 的学习。

MyBatis 的基础支撑层使用XPathParser来实现XML的解析,纸上得来终觉浅,本菜鸟决定亲自简单实践下XPathParser的使用,并在此做下备忘;

首先,XPathParser封装了XML的document对象,其构造方法较多,个人选了以下几个方法:

第一个是将XML内容作为一个字符串输入

public XPathParser(String xml) { commonConstructor(false, null, null); this.document = createDocument(new InputSource(new StringReader(xml))); }

接下来是添加一个是否进行校验的标志位

public XPathParser(String xml, boolean validation) { commonConstructor(validation, null, null); this.document = createDocument(new InputSource(new StringReader(xml))); }

再接下来,是添加一个Properties 来作为配置值方便解析(后面写测试方法,采用此构造方法)

public XPathParser(String xml, boolean validation, Properties variables) { commonConstructor(validation, variables, null); this.document = createDocument(new InputSource(new StringReader(xml))); }

我们先准备一份XML文件,是从网上抄来的,如下所示:

<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <!-- 引入外部资源文件 --> <properties resource="jdbc.properties"></properties> <!-- 设置驼峰匹配 --> <settings> <setting name="mapUnderscoreToCamelCase" value="true"/> </settings> <!-- 设置包扫描(别名) --> <typeAliases> <package name="cn.itcast.pojo"/> </typeAliases> <!-- 配置环境:可以配置多个环境,default:配置某一个环境的唯一标识,表示默认使用哪个环境 --> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <!-- 配置连接信息 --> <property name="driver" value="${jdbc.driverClass}"/> <property name="url" value="${jdbc.url}"/> <property name="username" value="${jdbc.username}"/> <property name="password" value="${jdbc.password}"/> </dataSource> </environment> </environments> <!-- 配置映射文件:用来配置sql语句和结果集类型等 --> <mappers> <mapper resource="UserMapper.xml"/> </mappers> </configuration>

我们构造一个Properties对象,作为构造方法的入参:

Properties properties = new Properties(); properties.put("jdbc.driverClass", "jdbc.driverClass"); properties.put("jdbc.url","hahaha");

构造方法如下(对付看吧)

XPathParser xPathParser = new XPathParser("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" + "<!DOCTYPE configuration PUBLIC \"-//mybatis.org//DTD Config 3.0//EN\"\n" + " \"http://mybatis.org/dtd/mybatis-3-config.dtd\">\n" + "<configuration>\n" + " <!-- 引入外部资源文件 -->\n" + " <properties resource=\"jdbc.properties\"></properties>\n" + " <!-- 设置驼峰匹配 -->\n" + " <settings>\n" + " <setting name=\"mapUnderscoreToCamelCase\" value=\"true\"/>\n" + " </settings>\n" + " <!-- 设置包扫描(别名) -->\n" + " <typeAliases>\n" + " <package name=\"cn.itcast.pojo\"/>\n" + " </typeAliases>\n" + " <!-- 配置环境:可以配置多个环境,default:配置某一个环境的唯一标识,表示默认使用哪个环境 -->\n" + " <environments default=\"development\">\n" + " <environment id=\"development\">\n" + " <transactionManager type=\"JDBC\"/>\n" + " <dataSource type=\"POOLED\">\n" + " <!-- 配置连接信息 -->\n" + " <property name=\"driver\" value=\"${jdbc.driverClass}\"/>\n" + " <property name=\"url\" value=\"${jdbc.url}\"/>\n" + " <property name=\"username\" value=\"${jdbc.username}\"/>\n" + " <property name=\"password\" value=\"${jdbc.password}\"/>\n" + " </dataSource>\n" + " </environment>\n" + " </environments>\n" + " <!-- 配置映射文件:用来配置sql语句和结果集类型等 -->\n" + " <mappers>\n" + " <mapper resource=\"UserMapper.xml\"/>\n" + " </mappers>\n" + "</configuration>", false, properties);

接下来,我们需要针对准备的xml文件,来设计XPath表达式,XPath表达式可以在此处学习

String string1 = xPathParser.evalString("//typeAliases/package/@name"); //typeAliases下package标签的name值 String string2 = xPathParser.evalString("//environments/environment/dataSource/@type"); //environments下environment下dataSource标签的type值 List<XNode> xNodes = xPathParser.evalNodes("//dataSource/property/@value"); //dataSource下property下的所有value值

前两个输出在此不做描述,我们遍历xNodes ,可以得到Body的值为:

jdbc.driverClass

hahaha

${jdbc.username}

${jdbc.password}

我们可以发现,jdbc.driverClass,hahaha,都是我们在入参的Properties中配置的值,因此可以通过${},来取出value,而对于Properties对象中不存在的值,XPathParser只能取对应的字符串作为value(${jdbc.password}等)。

希望通过学习优秀开源框架的工具,可以在以后自身工作的开发中学以致用,更好滴解决实际问题,以后本菜会多多实践优秀框架为我们创造的工具,丰富自己的武器库。

到此这篇关于MyBatis XPathParser解析器使用范例详解的文章就介绍到这了,更多相关MyBatis XPathParser内容请搜索易知道(ezd.cc)以前的文章或继续浏览下面的相关文章希望大家以后多多支持易知道(ezd.cc)!

推荐阅读

    学习写字楼新选择6000元主流配置

    学习写字楼新选择6000元主流配置,,这种配置需要考虑双核心的办公和娱乐平台,充分考虑办公室的办公需求和娱乐需求,以约6000元的预算和cost-e

    Lucene学习之高亮显示

    Lucene学习之高亮显示,索引,字符,在搜索引擎中我们经常会看到这样的情景: 红色部分我们称之为高亮显示,lucene提供了HighLighter模块来实

    Python之可迭代对象、迭代器、生成器

    Python之可迭代对象、迭代器、生成器,迭代,生成器,一、概念描述可迭代对象就是可以迭代的对象,我们可以通过内置的iter函数获取其迭代器,可

    应用程序对象

    应用程序对象,,应用程序对象是一个应用程序级对象,用于在所有用户之间共享信息,并且在Web应用程序运行期间可以保存数据。 应用的性质: 方法

    新手如何学习计算机知识(快速入门)

    新手如何学习计算机知识(快速入门),,作为一个初学者,因为我忙于工作和家庭的原因,我没有太多的时间去计算机培训班,但我想熟悉计算机操作和计算

    学习游戏两宜3000元菜鸟超频主机

    学习游戏两宜3000元菜鸟超频主机,,在英特尔中的主流新产品的推出,旧产品将面临洗牌。目前,奔腾双核E2180处理器的价格已经降至430元,而奔腾e2

    如何学习PP点(图2)

    如何学习PP点(图2),,再次输入密码,按GO你可以立即着陆(图1-5): 图1-5 着陆后,PP的主界面出现(图1-6): 图1-6 搜索 当成员进入PP时,点击主界面右上

    电脑维修学习网站|电脑维修自学网

    电脑维修学习网站|电脑维修自学网,,电脑维修自学网有的,建议多努力学习一些知识和本领,等出来可以自己租电脑维修,手机维修等工作,收入不错 电