前兩章我為大家詳細介紹了如何搭建Maven環(huán)境、Spring MVC的流程結(jié)構、Spring MVC與Struts2的區(qū)別以及示例中的一些配置文件的分析。在這一章,我就對示例的層次結(jié)構進行說明,以及MyBatis的一些簡單介紹。
本文不會對MyBatis作詳細說明,大象還是假定閱讀本文的朋友對MyBatis(ibatis)有最基本的了解,只有這樣才能較好的理解本文的內(nèi)容。關于MyBatis請查看它的官方文檔及其它參考資料,本文不作詳細討論。
一、工程結(jié)構圖
上面這是典型的Maven項目結(jié)構形式,使用本地倉庫管理jar包的依賴,使用插件打包編譯發(fā)布非常方便,讓我們從傳統(tǒng)的開發(fā)方式中解放出來,大家都快來使用Maven構建項目吧!
二、映射文件 使用MyBatis進行持久化操作,需要設置一個映射文件,一般來說,每張表對應一個實體對象和一個mapper映射文件。而MyBatis里面沒有像Hibernate那樣復雜的關聯(lián)關系,所以,它的每個實體類其實就是一個很普通的POJO類。而映射文件中,都是SQL語句,下面就是示例中RoleMapper.xml的代碼片段。

那么,MyBatis是如何將數(shù)據(jù)庫字段與POJO對象進行映射的呢?這是在它的內(nèi)部,會將到得的結(jié)果或結(jié)構集,與我們定義的POJO對象屬性進行映射,規(guī)則是,屬性首字母小寫,使用駝峰式命名方式,而字段則是單詞與單詞間,用下劃線連接。比如:數(shù)據(jù)庫有個USER_NAME字段,那么與它對應的屬性就應該是userName。如果字段命名沒有使用下劃線,那么屬性可以直接定義成該單詞。比如,NAME字段,它的屬性就是name。
三、基于namespace接口與公用dao的區(qū)別從MyBatis3.0開始,對mapper中的namespace屬性新增了一個特性:可以指定具體的接口來作為持久化操作類,在接口中定義與映射文件中id屬性值相同的方法,MyBatis會自動去綁定和執(zhí)行對應的SQL語句。這種接口實現(xiàn)方式,需要為每個Mapper創(chuàng)建一個接口,如果系統(tǒng)做大了,維護這些類會比較麻煩,大象個人傾向于基礎服務式的Dao實現(xiàn)類,如例子中的MyBatisDao。
四、MyBatisDao
持久化操作基類,SqlSessionDaoSupport是mybatis-spring插件中封裝的,用于獲得SQL Session連接,執(zhí)行數(shù)據(jù)庫操作,我定義了幾個常用的方法。
關于mybatis-spring插件我簡單介紹一下, Spring 3.x的發(fā)布并沒有對MyBatis這一優(yōu)秀的SQL框架提供支持,雖然在它的問題列表中已經(jīng)有這樣的請求,但直到目前3.0.5版的發(fā)布,都還沒將這個問題處理掉。不過這難不倒開源世界里廣大的愛好者與貢獻者,mybatis-spring就是在這樣的情況下誕生了。它是由MyBatis社區(qū)愛好者完成的一個開源項目,用來進行Spring 3.0與MyBatis 3.0的配置整合。該插件需要運行在JDK 5.0或更高版本。

五、Service
在ssm3這個示例中,大家有沒有發(fā)現(xiàn),已經(jīng)沒有為每個entity定義一個dao,而是統(tǒng)一的調(diào)用MyBatisDao作為存儲服務接口。另外與使用Hibernate的主要區(qū)別,就是不能直接傳一個對象參數(shù),還必須寫上key值,它是namespace加上ID值。

六、entity
MyBatis的實體類就是一個簡單的POJO對象,只是用來與表字段進行關聯(lián)映射,請注意,我這里所說的映射不是像Hibernate那種綁定關系,只一種存放數(shù)據(jù)的對象而已。

七、測試

六、entity
MyBatis的實體類就是一個簡單的POJO對象,只是用來與表字段進行關聯(lián)映射,請注意,我這里所說的映射不是像Hibernate那種綁定關系,只一種存放數(shù)據(jù)的對象而已。

七、測試
上面的步驟完成后,接下來就需要測試下我們的業(yè)務接口是否正常,編寫一個測試類,為了達到目的,簡便起見,大象是對RoleService進行測試,UserService同理類似。
在寫測試用例前,需要在POM文件中加入一個Srping測試依賴,這是大象在前面兩章疏忽漏掉了,請大家諒解。

然后編寫測試類,運行測試,通過!

然后編寫測試類,運行測試,通過!

到此,這一章的內(nèi)容就講完了,如果有對注解不理解的地方,請看下我之前的SSH2系列之三,至于MyBatis,它的內(nèi)容太多了,如果不清楚還請先看下使用指南。下一章我將會介紹web層,以及使用Spring MVC的注解來實現(xiàn)控制器功能。
本文為菠蘿大象原創(chuàng),如要轉(zhuǎn)載請注明出處。http://www.aygfsteel.com/bolo/archive/2011/08/04/352845.html