幫助IT團(tuán)隊(duì)快速構(gòu)建符合jt808協(xié)議部標(biāo)的基于java技術(shù)的GPS和視頻平臺(tái)(2379423771@qq.com)

          由ibatis引起的框架設(shè)計(jì)思考

          ?? 以前,不熟悉Ibatis的時(shí)候,自己寫了一個(gè)類似Ibatis的查詢分頁(yè)框架,SQL配置在XML文件當(dāng)中,提供腳本語(yǔ)法的功能。
          ?
          ??? 后來(lái),覺(jué)得Ibatis完全能替代自己的框架,還有Cache、Transaction等強(qiáng)功能。

          ?? 但是跟蹤到源碼才發(fā)現(xiàn)Ibatis完成是基于內(nèi)存分頁(yè)的,而且方法已經(jīng)Depreciated. 內(nèi)存分頁(yè)對(duì)我的應(yīng)用來(lái)說(shuō),是一點(diǎn)不實(shí)用的,其實(shí)就是一個(gè)廢物。

          ?? 但是Ibatis又不提供任何的回調(diào)接口,可以讓調(diào)用者擴(kuò)展。


          ?? 于是我不得不重新修改了Ibatis的源碼,向外部透出了一個(gè)回調(diào)接口,供分頁(yè)SQL使用,并重新打包成jar文件讓開(kāi)發(fā)人員使用。

          ??? 這真是不爽之極,為什么Ibatis不能提供,這么強(qiáng)大的框架都做出來(lái)了,但這個(gè)小小的分頁(yè),卻做不了,如果你做不了,其碼也要透一個(gè)接口給我呀。

          ??? 所以對(duì)于框架來(lái)說(shuō),職責(zé)的分擔(dān),是很重要的,完成你該完成的,該擴(kuò)展的地方,即要提供默認(rèn)實(shí)現(xiàn),也要提供接口,供調(diào)用者二次開(kāi)發(fā)。這才是框架的可擴(kuò)展性、靈活性所在。
          ??? 很多人在開(kāi)發(fā)框架時(shí),總期望做很多東東,自己給自己加套,反而喪失的靈活性,同時(shí)提供了很多不能擴(kuò)展的實(shí)現(xiàn),等于強(qiáng)加意志給使用者,愛(ài)用不用。

          ??? 相信很多人在用Ibatis的時(shí)候,也有同感,對(duì)于數(shù)據(jù)庫(kù)分頁(yè)查詢,應(yīng)當(dāng)是非常重用,非常普遍的一個(gè)功能,Ibatis竟然做的是如此的差,一些人在使用Ibatis的時(shí)候,不得不寫了兩套SQL,一個(gè)查詢總行數(shù)的,一個(gè)是查詢某一頁(yè)的SQL。實(shí)際上,ibatis完全可以根據(jù)一個(gè)SQL來(lái)生成這兩個(gè)SQL,并自動(dòng)分頁(yè)。

          posted on 2007-04-13 19:09 Speed 閱讀(3425) 評(píng)論(6)  編輯  收藏 所屬分類: 框架設(shè)計(jì)J2EEHibernate & Ibatis

          評(píng)論

          # re: 由ibatis引起的框架設(shè)計(jì)思考 2007-04-14 00:05 L

          在ibatis里面自己用參數(shù)控制來(lái)達(dá)到分頁(yè)也很容易啊。  回復(fù)  更多評(píng)論   

          # re: 由ibatis引起的框架設(shè)計(jì)思考 2007-04-14 10:02 不好說(shuō)

          有同感,不過(guò)從軟件工程角度上考慮使用兩套SQL也有好處。因?yàn)閮商譙QL全部可以對(duì)外公開(kāi)!  回復(fù)  更多評(píng)論   

          # re: 由ibatis引起的框架設(shè)計(jì)思考 2007-04-16 09:06 千山鳥(niǎo)飛絕

          Ibatis的分頁(yè)確實(shí)是他的致命傷。比起hibernate,我更喜歡ibatis,因?yàn)樗侵苯訉憇ql語(yǔ)句的,這對(duì)那些有著復(fù)雜的表結(jié)構(gòu)的項(xiàng)目來(lái)說(shuō)非常有好處。

          Lz有位說(shuō)傳參數(shù),對(duì)mysql和oracle都比較好用,但對(duì)sqlserver卻不是那么好用了,因?yàn)閟qlserver沒(méi)有分頁(yè)的方法,寫sql語(yǔ)句大復(fù)雜,寫存儲(chǔ)過(guò)程又大占系統(tǒng)資源了。  回復(fù)  更多評(píng)論   

          # re: 由ibatis引起的框架設(shè)計(jì)思考 2007-10-12 15:51 abcx

          我們做iBATIS分頁(yè)的時(shí)候花了一些時(shí)間,看過(guò)iBATIS的源代碼,但經(jīng)理是不同意直接修改iBATIS的源代碼的。然后,就只能在外部擴(kuò)展,費(fèi)了不少力,總算寫出了一個(gè)簡(jiǎn)單并且還算不錯(cuò)的分頁(yè)工具程序,基于Oracle數(shù)據(jù)庫(kù)的。在iBATIS的網(wǎng)站上建議使用數(shù)據(jù)庫(kù)的特性來(lái)分頁(yè),這樣iBATIS自己倒是省事了,不用考慮支持多數(shù)據(jù)庫(kù)的問(wèn)題。  回復(fù)  更多評(píng)論   

          # re: 由ibatis引起的框架設(shè)計(jì)思考 2008-01-02 09:20 java_蟈蟈


          @L
          偶也覺(jué)得用參數(shù)分頁(yè)滿不錯(cuò)的,呵呵,這是偶第一次用IBATIS時(shí)的分頁(yè),http://www.aygfsteel.com/wyz191/articles/156923.html

          還請(qǐng)指教
            回復(fù)  更多評(píng)論   

          # re: 由ibatis引起的框架設(shè)計(jì)思考 2008-07-17 12:53 lan

          iBATIS原先是有分頁(yè)的功能的,但是在使用中暴露出的問(wèn)題更多,如果去適應(yīng)各種數(shù)據(jù)庫(kù),就和Hibernate差不多了,這違背了iBATIS的本意和初衷。
          所以,iBATIS最終把這個(gè)功能給去掉了。

          分頁(yè)很難嗎?為什么要去用別人的,自己開(kāi)發(fā)的不是更容易控制?
          一個(gè)公司開(kāi)發(fā)個(gè)分頁(yè)功能不過(guò)分吧?而且還可以加上自己的特性。

          如果每個(gè)項(xiàng)目都需要開(kāi)發(fā)一個(gè)分頁(yè)功能,那iBATIS更不可能滿足你的需要。  回復(fù)  更多評(píng)論   

          導(dǎo)航

          留言簿(15)

          隨筆分類

          值得一看的博客

          積分與排名

          最新評(píng)論

          閱讀排行榜

          主站蜘蛛池模板: 合水县| 鄂温| 沅陵县| 大厂| 龙井市| 神农架林区| 平邑县| 桐柏县| 英吉沙县| 侯马市| 连城县| 安徽省| 方山县| 宁南县| 临泉县| 屏边| 江西省| 洛浦县| 津市市| 长泰县| 苗栗市| 保康县| 太保市| 嘉祥县| 长白| 滨州市| 荆门市| 西和县| 屯门区| 响水县| 胶州市| 淳安县| 枣庄市| 铜鼓县| 尚志市| 静海县| 会宁县| 承德县| 青龙| 安龙县| 信阳市|