?? 以前,不熟悉Ibatis的時候,自己寫了一個類似Ibatis的查詢分頁框架,SQL配置在XML文件當中,提供腳本語法的功能。
?
??? 后來,覺得Ibatis完全能替代自己的框架,還有Cache、Transaction等強功能。
?? 但是跟蹤到源碼才發現Ibatis完成是基于內存分頁的,而且方法已經Depreciated. 內存分頁對我的應用來說,是一點不實用的,其實就是一個廢物。
?? 但是Ibatis又不提供任何的回調接口,可以讓調用者擴展。
?? 于是我不得不重新修改了Ibatis的源碼,向外部透出了一個回調接口,供分頁SQL使用,并重新打包成jar文件讓開發人員使用。
??? 這真是不爽之極,為什么Ibatis不能提供,這么強大的框架都做出來了,但這個小小的分頁,卻做不了,如果你做不了,其碼也要透一個接口給我呀。
??? 所以對于框架來說,職責的分擔,是很重要的,完成你該完成的,該擴展的地方,即要提供默認實現,也要提供接口,供調用者二次開發。這才是框架的可擴展性、靈活性所在。
??? 很多人在開發框架時,總期望做很多東東,自己給自己加套,反而喪失的靈活性,同時提供了很多不能擴展的實現,等于強加意志給使用者,愛用不用。
??? 相信很多人在用Ibatis的時候,也有同感,對于數據庫分頁查詢,應當是非常重用,非常普遍的一個功能,Ibatis竟然做的是如此的差,一些人在使用Ibatis的時候,不得不寫了兩套SQL,一個查詢總行數的,一個是查詢某一頁的SQL。實際上,ibatis完全可以根據一個SQL來生成這兩個SQL,并自動分頁。