oracle分页

用easyui做界面的时候,在datagrid里面显示数据,用mysql的分页方式,发现在oracle中不可以使用。于是查了一些资料。

http://kingsen5.blog.163.com/blog/static/189301290201142591225277/

这篇博文里面,总结的比较详细,使用第一种方法,还是挺好用的。

SELECT * FROM 
(
SELECT A.*, ROWNUM RN 
FROM (SELECT * FROM TABLE_NAME) A 
WHERE ROWNUM <= 40
)
WHERE RN >= 21

在easyui中,传到后台的有两个参数,一个是page,一个是rows。前者是多少页,后者是每页多少行数据。

在oracle中,需要的是数据的index位置,第一条数据和最后一条数据。如上分页中,显示21-40这些数据。所以计算出这两个位置就可以了。

        int currentpage = Integer.parseInt((page == null || page == "0") ? "1": page);//第几页
        int pagesize = Integer.parseInt((rows == null || rows == "0") ? "10": rows);//每页多少行
        map.put("startindex", (currentpage-1)*pagesize);
        map.put("endindex", currentpage*pagesize);

就这几行代码,获取到开始位置和结束位置就ok了,作为参数,传入sql中,就可以获取到分页的数据了。

 

posted @ 2014-09-03 17:36  薛定谔的猫_  阅读(202)  评论(0编辑  收藏  举报