求教Struts分页的问题

07-03-01 Aaroncay
小弟刚做J2EE开发不久,我这几天快郁闷死了我用Struts做分页有些问题。其中上页,下页,跳转功能基本实现,可就是~~举个例子吧:我表的总数量是15条的话,我在jsp页面上按每页显示10条的记录来算,到第二页应该是5条啊,可我第二页还是出来10条。我的SQL语句是:

Select top "+lineSize+" * from(Select top "+lineSize+" * from (Select top "+currentPage*lineSize+" * from Img order by id asc) temptbl1 order by id desc) temptbl2 order by id asc

其中lineSize是每页显示的页数,currentPage是当前的页码都是从servlet或者struts中传进去的参数。可我觉得是不是currentPage*lineSize出了问题啊,哪位经验高手教教我吧给我点提示。不甚感激!

我的邮箱是:Aaroncay008@hotmail.com加我做好友就更好了

    

Coolyu0916
2007-03-01 20:19
你把 currentPage 跟linsize的值自己带入进去

然后看看你的sql对不对就可以了

sql语句分页的网上很多

去google就好了

你这种写法估计bill gates看完就吐血了

好不容易提高的效率基本上也白费了

Aaroncay
2007-03-02 09:06
我是JAVA新手,sql 语句是对的但我就是不知道怎么样才能算出下一页要显示的页数.

我在Struts中是这样写的:

int currentPage ;//当前页

int cp = cf.getCp() ;//从jsp->ActionForm传过来的跳转值

int lineSize = 10 ;//每页显示的行数

//总记录数

int allRecoreds = MydecDAO.getIn("MydecWork").getCountByImg() ;

if(cp != 0)

{

currentPage = cp ;

}

else

{

currentPage = 1 ;

}

ImgBean ib = new ImgBean() ;//业务Bean

List l = MydecDAO.getIn("MydecWork").findByAllImg(lineSize,currentPage) ;//将每页显示的行数和当前页数传进去得到一个查询全部的集合

对应方法findByAllImg()中的SQL语句:

Select top "+lineSize+" * from(Select top "+lineSize+" * from (Select top "+currentPage*lineSize+" * from Img order by id asc) temptbl1 order by id desc) temptbl2 order by id asc

如果按每页显示10条记录总记录数为15条来看的话,在第一遍执行的时候能是按每页10条来显示,在第2页我应该是5条记录才对但按我写的SQL语句中"currentPage*lineSize"来算的话也是就变成了20条了。我是不是得在Struts中加上对当前页数currentPage或每页显示页数lineSize的条件,还是这个SQL语句本身就能完成该功能。求教啊!

如果哪位高手有一个好点的通用方法,也请指出啊。最好有一个从JSP->Struts->SQL语句的简单实例,有些注释的更好啊。谢谢

Coolyu0916
2007-03-02 09:25
sql语句是错的,我给你计算一下page = 2的时候的情况

按照3、2、1的标号顺序看

1)Select top "+lineSize+" * from(

选择前十条从刚才选择的十条里面的十条记录

2)Select top "+lineSize+" * from (

选择前十条从刚才选的记录里面,也就是前是十五条的前十条

3)Select top "+currentPage*lineSize+" * from Img order by id asc

选了最上面20条出来,可是因为只有15条记录,所以返回十五条记录

4)) temptbl1 order by id desc) temptbl2 order by id asc

Aaroncay
2007-03-02 10:22
那这有什么办法吗解决下吗?我想不明白了

猜你喜欢
3Go 1 2 3 下一页