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);
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);
相关文章推荐
- 分页显示问题(jsp/sqlserver/mysql/oracle)
- 分页显示问题的解决方法(jsp,sqlserver,mysql,oracle)
- JAVA和MySQL实现分页和页面跳转指定当前显示页数的问题
- mysql一对多关联查询分页错误问题的解决方法
- mysql 5.6 order by limit 排序分页数据重复问题
- 分页显示问题的解决方法(jsp,sqlserver,mysql,oracle)
- mysql 分页问题
- mysql大数据量的分页查询问题
- 分页显示问题的解决方法(jsp,sqlserver,mysql,oracle)
- 使用mysql的limit进行分页时出现重复问题
- MySQL之分页问题解决
- mysql分页加排序数据重复问题解决方案
- Mysql分页数据显示总数恒为1问题的分析与解决
- 分页显示问题的解决方法(jsp,sqlserver,mysql,oracle)
- MySQL之Limit分页性能问题
- mysql通用分页存储过程遇到的问题(转载)
- MySQL分页查询偏移量问题
- MySQL分页拉取和客户端数据重复问题
- 使用mysql的limit进行分页时出现重复问题
- 解决Mysql数据量大的时候 分页优化(使用limit)的问题