注:通过sql语句查询实现java类的分页效果,主要可以分为以下步骤:登录界面--->controller--->首页--->controller(第一次页面传过去的页码为null,因此在controller中需要处理null)--->访问dao层通过limit实现分页查询--->返回所需分页的页面。下面请参考具体代码!
1、创建PagBean类,分页所用到的一些基本属性
package com.besttone.pojo;
import java.util.List;
import org.springframework.stereotype.Component;
public class PageBean {
private int pageSize = 10;// 每页显示多少条数据
private int nowPage = 0;// 当前页码
private int rowCount = 0;// 总行数
private int pageCount = 0;// 总页数
private List> rowList;// 每页存放的结果集
// getter/setter
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
public int getNowPage() {
return nowPage;
}
public void setNowPage(int nowPage) {
this.nowPage = nowPage;
}
public int getRowCount() {
return rowCount;
}
public void setRowCount(int rowCount) {
this.rowCount = rowCount;
}
public int getPageCount() {
this.pageCount = rowCount % pageSize == 0 ? rowCount / pageSize
: rowCount / pageSize + 1;
return pageCount;
}
public List> getRowList() {
return rowList;
}
public void setRowList(List> rowList) {
this.rowList = rowList;
}
public PageBean(int pageSize, int nowPage, int rowCount, int pageCount,
List> rowList) {
super();
this.pageSize = pageSize;
this.nowPage = nowPage;
this.rowCount = rowCount;
this.pageCount = pageCount;
this.rowList = rowList;
}
public PageBean() {
super();
}
}
2、Dao层,sql语句查询
package com.besttone.dao;
import java.util.List;
import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Repository;
import com.besttone.pojo.PageBean;
@Repository
public class PageDao {
public PageBean getPageBean() {
return pageBean;
}
public void setPageBean(PageBean pageBean) {
this.pageBean = pageBean;
}
@Autowired
private JdbcTemplate jdbcTemplate;
public JdbcTemplate getJdbcTemplate() {
return jdbcTemplate;
}
public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
}
/**
*
*
*
created by 周斌 at 2017-7-20 上午9:39:47
*
* @describe 获取总行数
* @return
*/
public List
3、Controller类,处理页面传过来的参数,并调用Dao层方法同时将数据库中的取到的属性放在request中,返回页面视图
package com.besttone.controller;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import com.besttone.dao.PageDao;
import com.besttone.pojo.PageBean;
@Controller
public class PageController {
@Autowired
private PageDao pageDao;
@RequestMapping(value = "page/getPage")
public String getPage(HttpServletRequest request,
HttpServletResponse response) {
String nowPages = request.getParameter("nowPage");
System.out.println(nowPages);
int pageSize = 5;
int nowPage = 0;
if (nowPages != null) {
nowPage = Integer.parseInt(nowPages);
}
if(nowPages == null){
nowPage=1;
}
PageBean pageBean = pageDao.getNowPage(pageSize, nowPage);
request.setAttribute("pageBean", pageBean);
request.setAttribute("list", pageBean.getRowList());
// request.setAttribute("nowPage", pageBean.getNowPage());
/* Object object = request.getAttribute("nowPage");
int i = Integer.parseInt(object.toString());*/
// request.setAttribute("pageCount", pageBean.getPageCount());
return "user";
}
}
4、页面信息,主要关注分页操作的js代码和el表达式取到的页面
<%@page import="com.besttone.pojo.PageBean"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>
显示用户
用户名
密码
操作
${e.username}
${e.password}
删除 | 授权
首页
上一页
第${pageBean.nowPage}页/
共${pageBean.pageCount}页
下一页 ${msg}
尾页
总结:1、js中的upPage()和downPage()方法是实现上一页和下一页,如果没有这两个方法,则当点击上一页的时候页码小于1的时候会就会出错,当点击下一页的时候,如果页码大于总页码的时候则会一直查询数据库,但数据库没有这些数据则会返回null;2、如果有必要请自行封装Dao方法,则只需要每次调用Dao方法进行sql语句拼接就可以了!