1. 程式人生 > >Mybatis通用封裝—基於泛型

Mybatis通用封裝—基於泛型

     在java後臺架構,資料庫的訪問,我們一般都會選擇一種對映機制,主流的也就是Hibernate跟Mybatis(ibatis)。Hibernate比較方便的實現了對映關係(特別是Hibernate4採用註解的方式,顯得更加簡單),但是Hibernate不夠靈活,當遇到複雜的SQL語句的時候Hibernate顯得力不從心。Mybatis可以支撐任何的SQL語句。但是對於Mybatis我們看到大部分人還是在XML裡面寫大量的sql語句,包括基本的增刪改成,過濾條件的處理,結果集的對映,這些都是些固定的重複的程式碼,導致XML檔案難以維護,每次新增一個簡單功能也要大張旗鼓的做很多工作。雖然mybatis官方提供自動生成實體類,對映XML檔案的工具,但是生成的東西維護起來其實更加繁瑣,除非我們所有的設計都基於這個工具。

     基於這個目的對Mybatis做一層封裝,讓可以開發人員極其簡單的實現基本的增刪改成,過濾條件,但是不削弱Mybatis的任何功能,對於基本語句,結果集對映我們可以非常簡單的實現(並且具有定製能力),對於複雜場景還可以用Mybatis原有的方式實現。

框架的理解

1.框架要簡單,最簡單的方式出來最簡單的結果,一定要基於預設大於修改的原則。

  所有的配置都有預設情況,儘可能找到最合理的配置,同時要提供開發配置修改的能力。

2.框架要理解開發人員的心理,知道開發人員需要什麼,會怎麼用,怎麼想,會犯什麼錯,框架的成功很大部分取決於如何讓開發不容易犯錯。

封裝目標

.我們只要建立好資料庫,建立一個實體類,就可以實現資料庫的增刪改查,按照各種欄位,不同類的過濾,排序。對基本的功能,我們不需要XML,Mapper類。同時我們擁有Mybatis原有的基本能力,也可以對不同場景做配置,所有的功能都以最少工作量來實現。

當前實現

當前工程採用Maven管理,當前實現是基於Spring的mybatis模板,由於Spring代理了mybatis的實現類,暫時沒有實現實體型別動態傳遞的方式,只是通過泛型的方式。在實現中提供各種場景的定製,基本上都是通過java註解進行配置。當前只講最簡單的實現基礎操作的步驟。(本工程剛剛實現,還有很多沒有待完善的地方,希望大家多包容同時多建議)

在當前工程下只要做下面四件事情。

1.建立實體類TestEntity繼承FFBaseEntity

2.配置主鍵, @FFColumn(isKey=true)

3.建立TestEntityDao 繼承Dao

4.直接用註解注入TestEntityDao,就是實現所有的Dao中的基礎方法。

開源路徑

https://git.oschina.net/tangjun114/OpenSource

後續目標

1.這個元件配置做文件說明 2.實現動態型別的傳遞,預設去掉TestEntityDao 3.對Service,Controller,層次做封裝 4.對前端封裝,前後臺介面做封裝。 5.對許可權,使用者等基礎模組做封裝 6.實現一個完整的Web開發框架(包括移動前端的對接)。