您的位置:首页 > 数据库 > MySQL

mysql分页问题

2014-12-14 20:49 78 查看
首先说明一下分页的几个变量:

pageNow 表示当前是第几页(由用户决定);

pageSize 表示每页显示几条记录(由程序决定);

pageCount 表示共有多少页(计算得出)

rowCount 表示共有多少记录(从数据库查询可得出)

pageCount的计算方法:

① pageCount = rowCount%pageSize==0 ? rowCount/pageSize : rowCount/pageSize + 1;

② pageCount = (rowCount-1)/pageSize+1;

③ if(rowCount%pageSize==0)
pageCount=rowCount/pageSize;

else pageCount=rowCount/pageSize+1;

rowCount的查询语句:

ps = conn.prepareStatement("select count(*) from user");

颜色部分为mysql查询总共有多少记录的语句

rs = ps.executeQuery();
rs.next(); 一定要执行以下next()方法,不然取不到记录数量!
rowCount=rs.getInt(1);

下面是分页的核心部分:

String sql = " select * from user order by id limit "+(pageNow-1)*pageSize+","+pageSize+"";
该sql语句是用来执行分页操作的mysql语句,具体格式为:
select * from 表名 order by 字段名 limit number1 , number2;
(number1表示从第几个记录开始 不包括number1本身;number2表示从number1往下数几个)

ps = conn.prepareStatement(sql);
rs=ps.executeQuery();
out.println("<table border=1 width=500>"); 创建一个表格
out.println("<tr><th>id</th><th>用户名</th><th>密码</th></tr>");
while(rs.next())
{
out.println("<tr><td>"+rs.getString(1)+"</td><td>"+
rs.getString(2)+"</td><td>"+rs.getString(3)+"</td></tr>");
}
out.println("</table>");

out.print("<a href='/UserManager1/ManageUsers?pageNow="+(pageNow==1?pageNow:(pageNow-1))+"'>上一页</a>");
该语句是显示 上一页 操作,里面运用了三目运算来计算是否当前页面是否为第一页,如果为第一页,则跳转仍停留在本页面;如果不为第一页,则执行 上一页 跳转 (页面内部跳转:把值pageNow通过?传递给 request.getParameter("pageNow"))

for(int i=1;i<=pageCount;i++)
{
out.print("<a href='/UserManager1/ManageUsers?pageNow="+i+"'><"+i+"></a>");
该语句显示页码

}

out.print("<a href='/UserManager1/ManageUsers?pageNow="+(pageNow==pageCount?pageNow:(pageNow+1))+"'>下一页</a>");
该语句是显示 下一页 操作,里面运用了三目运算来计算是否当前页面是否为最后一页,如果为最后一页,则跳转仍停留在本页面;如果不为最后一页,则执行
下一页 跳转 (页面内部跳转:把值pageNow通过?传递给 request.getParameter("pageNow"))

out.println(" "+"当前页"+pageNow+"/"+"总页数"+pageCount);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: