<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
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內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45