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