为什么要使用分页查询
在Java应用程序中,数据查询是必不可少的功能。但当处理大量数据时,一次性查询所有数据会导致性能下降、服务器响应时间变长,内存溢出等问题。而使用分页查询,可以将查询结果分割成多个部分,每次只查询部分数据,从而提高性能、减少内存消耗、提高用户体验和数据安全性。
因为页面上有大量的数据需要我们经行处理,所有就要封装一个Page类
成员变量
构造方法,我们可以在构造方法中写算法,当我们new Page时它就会执行
这里需要两个方法,一个统计全部教师数据,一个实现分页查询
分页查询
/**
* 分页查询
* @param pageNum
* @param pageSize
* @return
*/
@Override
public List findTeacherByPage(Integer pageNum, Integer pageSize) {
List list = new ArrayList();
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
try {
conn = DBUtils.dbUtils();
String sql = "SELECT id,username,password,gender,email,remark FROM teacher limit ?,?";
ps = conn.prepareStatement(sql);
ps.setInt(1,pageNum);
ps.setInt(2,pageSize);
rs = ps.executeQuery();
while (rs.next()){
Teacher teacher = new Teacher(
rs.getInt("id"),
rs.getString("username"),
rs.getString("password"),
rs.getString("gender"),
rs.getString("email"),
rs.getString("remark"));
list.add(teacher);
}
} catch (SQLException e) {
e.printStackTrace();
}
DBUtils.dbClose(conn,ps,rs);
return list;
}
统计数量
/**
* 统计所有教师
* @return
*/
@Override
public int findTeacherNum() {
int aLong = 0;
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
try {
conn = DBUtils.dbUtils();
String sql = "SELECT count(*) from teacher";
ps = conn.prepareStatement(sql);
rs = ps.executeQuery();
while (rs.next()){
aLong = rs.getInt(1);
}
} catch (SQLException e) {
e.printStackTrace();
}
DBUtils.dbClose(conn,ps,null);
return aLong;
}
在service中可以获得分页数据和统计数量,所有service的返回值需要一个Page来将数据保存
/**
* 分页
* @param nowPage
* @return
*/
@Override
public Page showPageTeacher(Integer nowPage) {
TeacherDao teacherDao = new TeacherDaoImpl();
int count = teacherDao.findTeacherNum();
Page page = new Page(nowPage,count);
List list = teacherDao.findTeacherByPage(page.getPageNum(),page.getPageRecord());
page.setList(list);
return page;
}
String action = req.getParameter("action");
/**
* 显示用户
*/
if ("showAllTeacher".equals(action)){
int nowPage = Integer.parseInt(req.getParameter("nowPage"));
TeacherService teacherService = new TeacherServiceImpl();
Page page = teacherService.showPageTeacher(nowPage);
req.getSession().setAttribute("page",page);
resp.sendRedirect("/schoolproject/pages/teacher_infor.jsp");
}
当我们要进入分页时,要传递值,让nowPage(当前页)值为1,如果不想传递参数就要给nowPage赋初始值为一
到这里,Javaweb实现分页查询,简单易懂就结束了,希望对你有帮助!!!