<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
前言:
解析完全域性組態檔後接下來就是解析Mapper檔案了,它是通過XMLMapperBuilder來進行解析的
XMLMapperBuilder的parse()方法:
public void parse() { if (!configuration.isResourceLoaded(resource)) { configurationElement(parser.evalNode("/mapper")); configuration.addLoadedResource(resource); bindMapperForNamespace(); } parsePendingResultMaps(); parsePendingCacheRefs(); parsePendingStatements(); }
<resultMap>
標籤<cache-ref>
標籤重點看一下XMLMapperBuilder類的configurationElement()方法
MLMapperBuilder類的configurationElement()方法:
private void configurationElement(XNode context) { try { String namespace = context.getStringAttribute("namespace"); if (namespace == null || namespace.isEmpty()) { throw new BuilderException("Mapper's namespace cannot be empty"); } builderAssistant.setCurrentNamespace(namespace); cacheRefElement(context.evalNode("cache-ref")); cacheElement(context.evalNode("cache")); parameterMapElement(context.evalNodes("/mapper/parameterMap")); resultMapElements(context.evalNodes("/mapper/resultMap")); sqlElement(context.evalNodes("/mapper/sql")); buildStatementFromContext(context.evalNodes("select|insert|update|delete")); } catch (Exception e) { throw new BuilderException("Error parsing Mapper XML. The XML location is '" + resource + "'. Cause: " + e, e); } }
<cache-ref>
標籤,這個標籤是用來參照別的Cache快取<cache>
標籤,這個標籤是用來啟用Mybatis的二級快取的,一級快取是預設開啟的,在這個方法裡解析到MapperBuilderAssistant類完成Cache的建立,儲存在Configuration.caches的集合中,集合的key是namespace,值是Cache物件<parameterMap>
標籤,這個標籤已經廢棄了,一般使用parameterType
來定義引數的類名<resultMap>
標籤,這個標籤是結果對映,它標籤下的所有子標籤解析後儲存在ResultMap物件中,具體會解析先獲取resultMap中的type,type是結果集對映成的java物件,然後解析resultMap標籤的子標籤,包括<constructor>、<id>、<result>、<collection>
等標籤,這些標籤生成ResultMapping物件,然後獲取id extends等屬性,構建ResultMapResolver物件,建立ResultMap物件儲存到Configuration.resultMaps集合中<select>、<insert>、<update>、<delete>
等SQL節點,這些標籤大家肯定就熟悉了,就是我們的增刪改查的sql語句,通過XMLStatementBuilder來進行解析,它會先解析<include>
標籤,然後解析<selectKey>
標籤,儲存到Configuration.keyGenerators集合中,最後通過LanguageDriver.createSqlSource()方法建立SqlSource物件,構建MappedStatement物件,MappedStatement的sqlSource記錄sql語句,sqlCommandType記錄SQL語句的型別,儲存在Configuration.mappedStatements集合中文章主要講了Mapper對映檔案的解析,包括namespace、cache、resultMap、sql等標籤,最終這些資訊都會儲存到Configuration中,理解Mapper的對映邏輯還是非常重要的,因為我們開發的時候主要就是編寫Mapper檔案。
到此這篇關於Java Mybatis的初始化之Mapper.xml對映檔案的詳解的文章就介紹到這了,更多相關Java Mapper.xml對映檔案 內容請搜尋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