在服务端分页。跳到第n页才查询、显示第n页内容。要点就是根据客户端表格的“页面”计算出数据库要查询的当前页面的第一条记录的位置。优点:实时性:跳页才查询。数据量小:只加载当前页的记录进行显示。
重点在于两条语句:select count(*) from ...:查询得到记录总条数
select * from .. limit pageNo,rowsCount:查询从第pageNo条开始的rowsCount条数据。
int pages=0; //待显示页面 int count=0; //总条数 int totalpages=0; //总页数 int limit=10; //每页显示记录条数 //计算记录总数的第二种办法:使用mysql的聚集函数count(*) ResultSet sqlRst = sqlStmt.executeQuery("select count(*) from user"); if(sqlRst.next()){ count = sqlRst.getInt(1);//结果为count(*)表,只有一列。这里通过列的下标索引(1)来获取值 } //由记录总数除以每页记录数得出总页数 totalpages = (int)Math.ceil(count/(limit*1.0)); //获取跳页时传进来的当前页面参数 String strPage = request.getParameter("pages"); //判断当前页面参数的合法性并处理非法页号(为空则显示第一页,小于0则显示第一页,大于总页数则显示最后一页) if (strPage == null) { pages = 1; } else { try{ pages = java.lang.Integer.parseInt(strPage); }catch(Exception e){ pages = 1; } if (pages < 1){ pages = 1; } if (pages > totalpages){ pages = totalpages; } } //由(pages-1)*limit算出当前页面第一条记录,由limit查询limit条记录。则得出当前页面的记录 sqlRst = sqlStmt.executeQuery("select * from user order by user_id limit " + (pages - 1) * limit + "," + limit); while (sqlRst.next()){//遍历显示}
