前兩章我爲你們詳細介紹瞭如何搭建Maven環境、Spring MVC的流程結構、Spring MVC與Struts2的區別以及示例中的一些配置文件的分析。在這一章,我就對示例的層次結構進行說明,以及MyBatis的一些簡單介紹。
本文不會對MyBatis做詳細說明,大象仍是假定閱讀本文的朋友對MyBatis(ibatis)有最基本的瞭解,只有這樣才能較好的理解本文的內容。關於MyBatis請查看它的官方文檔及其它參考資料,本文不做詳細討論。
1、工程結構圖
web
上面這是典型的Maven項目結構形式,使用本地倉庫管理jar包的依賴,使用插件打包編譯發佈很是方便,讓咱們從傳統的開發方式中解放出來,你們都快來使用Maven構建項目吧!
2、映射文件spring
使用MyBatis進行持久化操做,須要設置一個映射文件,通常來講,每張表對應一個實體對象和一個mapper映射文件。而MyBatis裏面沒有像Hibernate那樣複雜的關聯關係,因此,它的每一個實體類其實就是一個很普通的POJO類。而映射文件中,都是SQL語句,下面就是示例中RoleMapper.xml的代碼片斷。

那麼,MyBatis是如何將數據庫字段與POJO對象進行映射的呢?這是在它的內部,會將到得的結果或結構集,與咱們定義的POJO對象屬性進行映射,規則是,屬性首字母小寫,使用駝峯式命名方式,而字段則是單詞與單詞間,用下劃線鏈接。好比:數據庫有個USER_NAME字段,那麼與它對應的屬性就應該是userName。若是字段命名沒有使用下劃線,那麼屬性能夠直接定義成該單詞。好比,NAME字段,它的屬性就是name。
3、基於namespace接口與公用dao的區別 從MyBatis3.0開始,對mapper中的namespace屬性新增了一個特性:能夠指定具體的接口來做爲持久化操做類,在接口中定義與映射文件中id屬性值相同的方法,MyBatis會自動去綁定和執行對應的SQL語句。這種接口實現方式,須要爲每一個Mapper建立一個接口,若是系統作大了,維護這些類會比較麻煩,大象我的傾向於基礎服務式的Dao實現類,如例子中的MyBatisDao。 4、MyBatisDao 持久化操做基類,SqlSessionDaoSupport是mybatis-spring插件中封裝的,用於得到SQL Session鏈接,執行數據庫操做,我定義了幾個經常使用的方法。數據庫
關於mybatis-spring插件我簡單介紹一下, Spring 3.x的發佈並無對MyBatis這一優秀的SQL框架提供支持,雖然在它的問題列表中已經有這樣的請求,但直到目前3.0.5版的發佈,都還沒將這個問題處理掉。不過這難不倒開源世界裏廣大的愛好者與貢獻者,mybatis-spring就是在這樣的狀況下誕生了。它是由MyBatis社區愛好者完成的一個開源項目,用來進行Spring 3.0與MyBatis 3.0的配置整合。該插件須要運行在JDK 5.0或更高版本。
5、Servicemybatis
在ssm3這個示例中,你們有沒有發現,已經沒有爲每一個entity定義一個dao,而是統一的調用MyBatisDao做爲存儲服務接口。另外與使用Hibernate的主要區別,就是不能直接傳一個對象參數,還必須寫上key值,它是namespace加上ID值。
6、entity MyBatis的實體類就是一個簡單的POJO對象,只是用來與表字段進行關聯映射,請注意,我這裏所說的映射不是像Hibernate那種綁定關係,只一種存放數據的對象而已。
7、測試
上面的步驟完成後,接下來就須要測試下咱們的業務接口是否正常,編寫一個測試類,爲了達到目的,簡便起見,大象是對RoleService進行測試,UserService同理相似。
在寫測試用例前,須要在POM文件中加入一個Srping測試依賴,這是大象在前面兩章疏忽漏掉了,請你們諒解。
而後編寫測試類,運行測試,經過!

到此,這一章的內容就講完了,若是有對註解不理解的地方,請看下我以前的SSH2系列之三,至於MyBatis,它的內容太多了,若是不清楚還請先看下使用指南。
下一章我將會介紹web層,以及使用Spring MVC的註解來實現控制器功能。