用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中,就可以获取到分页的数据了。