|
这个主题共有 10 回复 / 1 页 [
]
|
|
|
|
|
|
求教Struts分页的问题
|
发表: 2007年03月01日 17:41
|
回复
|
|
小弟刚做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加我做好友就更好了
|
|
|
|
|
|
re:求教Struts分页的问题
|
发表: 2007年03月01日 20:19
|
回复
|
|
你把 currentPage 跟linsize的值自己带入进去 然后看看你的sql对不对就可以了
sql语句分页的网上很多 去google就好了 你这种写法估计bill gates看完就吐血了 好不容易提高的效率基本上也白费了
|
|
|
|
|
|
re:求教Struts分页的问题
|
发表: 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语句的简单实例,有些注释的更好啊。谢谢
|
|
|
|
|
|
re:求教Struts分页的问题
|
发表: 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
|
|
|
|
|
|
re:求教Struts分页的问题
|
发表: 2007年03月02日 10:22
|
回复
|
|
|
|
|
|
|
|
re:求教Struts分页的问题
|
发表: 2007年03月02日 10:34
|
回复
|
|
|
select top pagesize b.* from (select top currpage*pagesize 主键字段,排序字段 from 表名 order by 排序字段 desc) a,表名 b where b.主键字段 = a.主键字段 order by a.排序字段
|
|
|
|
|
|
re:求教Struts分页的问题
|
发表: 2007年03月02日 11:08
|
回复
|
|
|
|
|
|
|
|
re:求教Struts分页的问题
|
发表: 2007年03月02日 13:02
|
回复
|
|
谢谢谢谢,我的出来了我把SQL语句改了一下 select top "+lineSize+" * from img where id not in(select top "+(currentPage-1)*lineSize+" id from img order by id desc) order by id desc 就可以了! 不过我这样是不是消耗了太多的系统开销啊? 这儿能加分吗?我能给你加分吗?
|
|
|
|
|
|
re:求教Struts分页的问题
|
发表: 2007年03月02日 21:27
|
回复
|
|
我不是boss 只是一个最近在研究java 所以来这里
程序正确性是第一位的 效率要满足之后才要考虑 sql 2000 分页有更高的效率的方法 不过你如果最近专著于java不希望你来研究 在某段时间专著的研究某个东西可以更快的提升 sql也是很费时间的东西
|
|
|
|
|
|
re:求教Struts分页的问题
|
发表: 2007年03月26日 13:25
|
回复
|
|
|
|
|
|
|
|
re:求教Struts分页的问题
|
发表: 2007年04月02日 12:31
|
回复
|
|
从T-SQL看出你用的是MS的数据库.我BLOG上转载有一个文章,是以存储过程的方式实现的.当然你可以改也对应的JAVA类来生成翻页SQL. http://blog.csdn.net/justin_579 数据库板块
[该贴被leoyu于2007年04月02日 12:32修改过]
|
|
|
|