一、首先看一下mysql的分页:mysql使用limit关键字来分页。
select * from userlogin order by id limit ?,?;
前一个参数为(currpage-1)*size;后一个参数为size。
二、再来看一下oracle。在oracle中,rownum关键字可以将查询出来的元组编号,如现有good表:
则:select gno,gname,price,rownum from good where rownum<5;得到的结果集如下:
但是如果根据rownum来筛选如:select gno,gname,price,rownum from good where rownum>=2 and rownum<=3;得到的结果集为空,因为rownum本身不是筛选的条件,它是把筛选出来的结果集进行编号。这里先找到整个表中的第一条数据,rownum为1,不满足rownum>=2,继续往后,把整个表的第二条数据的元组编号作为1,还是不满足,继续往下推理,所以得到的为空。那么oracle该怎么分页查询呢?既然rownum不可以直接设置下限,但是先把上限查出来作为一个表,然后利用嵌套查询在这个表里面不就可以把下限作为筛选条件了:select gno,gname,price from (
select gno,gname,price,rownum rn from good where rownum<=3)
where rn>=3;
查询的就是第三条数据。
在做项目时就可以这样分页:
select gno,gname,price from (
select gno,gname,price,rownum rn from good where rownum<=?)
where rn>?;
传两个参数即可:
int a = currPage* Const.PAGE_SIZE;
int b = (currPage-1)*Const.PAGE_SIZE;