帮助IT团队快速构建符合jt808协议部标的基于java技术的GPS和视频平台(2379423771@qq.com)

由ibatis引起的框架设计思考

   以前,不熟悉Ibatis的时候,自己写了一个类似Ibatis的查询分页框架,SQL配置在XML文件当中,提供脚本语法的功能。
 
    后来,觉得Ibatis完全能替代自己的框架,还有Cache、Transaction等强功能。

   但是跟踪到源码才发现Ibatis完成是基于内存分页的,而且方法已经Depreciated. 内存分页对我的应用来说,是一点不实用的,其实就是一个废物。

   但是Ibatis又不提供任何的回调接口,可以让调用者扩展。


   于是我不得不重新修改了Ibatis的源码,向外部透出了一个回调接口,供分页SQL使用,并重新打包成jar文件让开发人员使用。

    这真是不爽之极,为什么Ibatis不能提供,这么强大的框架都做出来了,但这个小小的分页,却做不了,如果你做不了,其码也要透一个接口给我呀。

    所以对于框架来说,职责的分担,是很重要的,完成你该完成的,该扩展的地方,即要提供默认实现,也要提供接口,供调用者二次开发。这才是框架的可扩展性、灵活性所在。
    很多人在开发框架时,总期望做很多东东,自己给自己加套,反而丧失的灵活性,同时提供了很多不能扩展的实现,等于强加意志给使用者,爱用不用。

    相信很多人在用Ibatis的时候,也有同感,对于数据库分页查询,应当是非常重用,非常普遍的一个功能,Ibatis竟然做的是如此的差,一些人在使用Ibatis的时候,不得不写了两套SQL,一个查询总行数的,一个是查询某一页的SQL。实际上,ibatis完全可以根据一个SQL来生成这两个SQL,并自动分页。

posted on 2007-04-13 19:09 Speed 阅读(3396) 评论(6)  编辑  收藏 所属分类: 框架设计J2EEHibernate & Ibatis

评论

# re: 由ibatis引起的框架设计思考 2007-04-14 00:05 L

在ibatis里面自己用参数控制来达到分页也很容易啊。  回复  更多评论   

# re: 由ibatis引起的框架设计思考 2007-04-14 10:02 不好说

有同感,不过从软件工程角度上考虑使用两套SQL也有好处。因为两套SQL全部可以对外公开!  回复  更多评论   

# re: 由ibatis引起的框架设计思考 2007-04-16 09:06 千山鸟飞绝

Ibatis的分页确实是他的致命伤。比起hibernate,我更喜欢ibatis,因为他是直接写sql语句的,这对那些有着复杂的表结构的项目来说非常有好处。

Lz有位说传参数,对mysql和oracle都比较好用,但对sqlserver却不是那么好用了,因为sqlserver没有分页的方法,写sql语句大复杂,写存储过程又大占系统资源了。  回复  更多评论   

# re: 由ibatis引起的框架设计思考 2007-10-12 15:51 abcx

我们做iBATIS分页的时候花了一些时间,看过iBATIS的源代码,但经理是不同意直接修改iBATIS的源代码的。然后,就只能在外部扩展,费了不少力,总算写出了一个简单并且还算不错的分页工具程序,基于Oracle数据库的。在iBATIS的网站上建议使用数据库的特性来分页,这样iBATIS自己倒是省事了,不用考虑支持多数据库的问题。  回复  更多评论   

# re: 由ibatis引起的框架设计思考 2008-01-02 09:20 java_蝈蝈


@L
偶也觉得用参数分页满不错的,呵呵,这是偶第一次用IBATIS时的分页,http://www.blogjava.net/wyz191/articles/156923.html

还请指教
  回复  更多评论   

# re: 由ibatis引起的框架设计思考 2008-07-17 12:53 lan

iBATIS原先是有分页的功能的,但是在使用中暴露出的问题更多,如果去适应各种数据库,就和Hibernate差不多了,这违背了iBATIS的本意和初衷。
所以,iBATIS最终把这个功能给去掉了。

分页很难吗?为什么要去用别人的,自己开发的不是更容易控制?
一个公司开发个分页功能不过分吧?而且还可以加上自己的特性。

如果每个项目都需要开发一个分页功能,那iBATIS更不可能满足你的需要。  回复  更多评论   


只有注册用户登录后才能发表评论。


网站导航:
 

导航

留言簿(15)

随笔分类

值得一看的博客

积分与排名

最新评论

阅读排行榜