现代web系统中存在大量的数据,如果不分页,这些数据将难以处理
分页有利于页面的展示,并且减轻服务器和数据库的压力。
分页的种类
1.伪分页,内存级分页
查询的是全部数据,但是只展示一部分
2.真分页,又称为物理分页,或者叫组数据库分页
查询和展示的都是部分数据
MySQL数据库分页
-- mysql数据库分页语句
-- 关键字limit 起始位置(offset) 查询数量((pageSize)
-- 全量查询
select * from student;
-- 每页显示5条
select *from student limit 0,5;
-- 第二页显示的内容
SELECT *from student limit 5,5;
Dao层代码
package org.lanqiao.dao.impl;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import org.lanqiao.bean.Student;
import org.lanqiao.dao.IStudentDao;
import org.lanqiao.util.DBUtil;
public class StudentDaoImpL implements IStudentDao{
@Override
public List<Student> getStuByPage(int currentPage, int pageSize) {
//建立连接
Connection conn=DBUtil.getConn();
String sql="select *from student limit ?,?";
Object[] objs= {(currentPage-1)*pageSize,pageSize};
ResultSet rs=DBUtil.excuteQuery(sql, objs);
List<Student> students=new ArrayList<>();
try {
while(rs.next()) {
int sid=rs.getInt("id");
String name=rs.getString("name");
String pass=rs.getString("pass");
String grade=rs.getString("grade");
int age=rs.getInt("age");
int teaId=rs.getInt("tea_id");
Student student=new Student(sid,name,pass,grade,age,teaId);
students.add(student);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return students;
}
}
分页工具类Page.java
currentPage 当前页
pageSize 每页显示的条数
offset 偏移量
totalCount 数据总条数
totalPage 数据总页数
获取总页数的数据的总条数
-- 获取总条数
SELECT COUNT(id) from student;
Dao层代码
public int getStuCount() {
//建立连接
Connection conn=DBUtil.getConn();
String sql="select count(id) from student";
ResultSet rs=DBUtil.excuteQuery(sql, null);
int count=-1;
try {
if(rs.next()) {
count=rs.getInt(1);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return count;
}