锁定老帖子 主题:『讨论』ibatis的翻页
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2006-08-18
最近在做一个项目的架构设计,框架准备采用webwork+spring+ibatis。项目要在3个月左右的时间内完成50个左右的模块的设计,开发,测试(4个人),晕呀,这怎么可能呢。 这几天在做ibatis的封装,采用了spring的ibatistemplate。在做翻页时,遇到了些问题,大家以前有谁遇到过吗?大家讨论下吧。 1.ibatis的PaginatedList 这个类是专门负责翻页的,但它的翻页是假翻页,还是把所有数据都读到result中再进行翻页,而且也不提供记录总数的值(我想,这个值可能是要再查一遍count(*)数据吧?) 2.如果要为每个翻页查询在xml文件中写两个select(一个count(*),一个数据),感觉很累赘。难道就没有别的办法了吗? 3.ibatis是一个sql mapping工具,看了他的文档,没有提供对某种数据库专门的翻页机制,比如mysql用limit,oracle用rownum。所以,让他支持真翻页难道还要在每个select语句中增加rownum这个条件吗? 4.我记得好象以前在坛子里有个人回复过关于ibatis真翻页的事,但找了好久,一直没找到。晕呀。。 配置文件: 错误提示信息: 你的分析: 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2006-08-18
由于不同的数据库有不同的翻页机制,所以我的做法是写了两个sql,分别处理不数据集和数据总数.
我觉得使用iBatis就是觉得它的灵活性,自由度大,可控性强. 对ibatis自己的那个分页真的是不敢恭维.希望能看到有什么跟好的解决方案. |
|
返回顶楼 | |
发表时间:2006-08-18
PaginatedList还没来得及细心看,它继承了List接口,具体有一个PaginatedArrayList类实现。但这种翻页在数据量大的情况下不可行。我始终觉得做到数据库翻页是最好的。但如果让每个业务模块都去写两个sql语句,而且其中一个还要加上rownum,这反倒感觉很累赘。如果有办法把这两步封装起来,会节省很多不必要的时间的。
|
|
返回顶楼 | |
发表时间:2006-08-20
翅膀 写道 PaginatedList还没来得及细心看,它继承了List接口,具体有一个PaginatedArrayList类实现。但这种翻页在数据量大的情况下不可行。我始终觉得做到数据库翻页是最好的。但如果让每个业务模块都去写两个sql语句,而且其中一个还要加上rownum,这反倒感觉很累赘。如果有办法把这两步封装起来,会节省很多不必要的时间的。
提个想法,如果现在客户有个需求,增加对所有数据动态按任何某些字段做排序,有否好的解决方案? |
|
返回顶楼 | |
发表时间:2006-08-21
KayMO 写道 翅膀 写道 PaginatedList还没来得及细心看,它继承了List接口,具体有一个PaginatedArrayList类实现。但这种翻页在数据量大的情况下不可行。我始终觉得做到数据库翻页是最好的。但如果让每个业务模块都去写两个sql语句,而且其中一个还要加上rownum,这反倒感觉很累赘。如果有办法把这两步封装起来,会节省很多不必要的时间的。
提个想法,如果现在客户有个需求,增加对所有数据动态按任何某些字段做排序,有否好的解决方案? 不知道KayMO是不是想通过这个需求向我说明一些什么问题,我先说说我对这个需求的理解吧。 如果有这个需求,咱们先想想,这个需求是否可以抽象出来? 某些字段是否可以排序,这些字段如果是说单表的话,默认应该是指所有字段。而排序只不过是选择某几个字段进行相应的排序,如果,我们默认所有字段为升序。当读取选择的某几个排序字段时,再按指定的几个字段排序即可。 至少,我觉得这个需求的代码级别可以抽象出来。至于xml的sql,用 order by $order1$,$order2$这种方式去替换就可以了吧。。。。 |
|
返回顶楼 | |
发表时间:2006-08-30
翅膀 写道 KayMO 写道 翅膀 写道 PaginatedList还没来得及细心看,它继承了List接口,具体有一个PaginatedArrayList类实现。但这种翻页在数据量大的情况下不可行。我始终觉得做到数据库翻页是最好的。但如果让每个业务模块都去写两个sql语句,而且其中一个还要加上rownum,这反倒感觉很累赘。如果有办法把这两步封装起来,会节省很多不必要的时间的。
提个想法,如果现在客户有个需求,增加对所有数据动态按任何某些字段做排序,有否好的解决方案? 不知道KayMO是不是想通过这个需求向我说明一些什么问题,我先说说我对这个需求的理解吧。 如果有这个需求,咱们先想想,这个需求是否可以抽象出来? 某些字段是否可以排序,这些字段如果是说单表的话,默认应该是指所有字段。而排序只不过是选择某几个字段进行相应的排序,如果,我们默认所有字段为升序。当读取选择的某几个排序字段时,再按指定的几个字段排序即可。 至少,我觉得这个需求的代码级别可以抽象出来。至于xml的sql,用 order by $order1$,$order2$这种方式去替换就可以了吧。。。。 没有,只是个想法,刚好项目也碰到一些类似的问题。 |
|
返回顶楼 | |
发表时间:2006-08-30
可以看看我的实现
http://forum.iteye.com/viewtopic.php?t=22159 或许对你有些帮助,数据库是oracle,但是别的数据库也应该有类似的实现 |
|
返回顶楼 | |
发表时间:2006-08-30
我改了一下iBATIS的源码,提供了一个查询效率高的实现方法。
目前支持的数据库主要有Oracle/SQL Server/My SQL |
|
返回顶楼 | |
发表时间:2006-08-31
hzxia 写道 我改了一下iBATIS的源码,提供了一个查询效率高的实现方法。
目前支持的数据库主要有Oracle/SQL Server/My SQL 噢,是吗,可以拿上来大家共享一下吗? 我觉得最好的解决方法其实也就是改ibatis的源码。。 |
|
返回顶楼 | |
发表时间:2006-09-03
呵呵,我是在一个循环翻页里计数得到总页数,然后用它的API来求出总记录数。
|
|
返回顶楼 | |