一,编写一个分页工具类
package com.bhf.util;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class PageDate {
//当前页
private Integer currentPage;
//每页显示的条数
private Integer limit;
//总条数
private Long total;
//总页数
private Long totalPage;
//当页显示的数据
private Object data;
public Long getTotalPage(){
totalPage=(total%limit==0)?(total/limit):(total/limit)+1;
return totalPage;
}
}
二,编写Servlet中分页查询方法
//分页查询方法
protected void selectPage(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException{
//实现分页需要传递两个必须得数据 当前页currentPage 和 每页显示条数 limit
Integer currentPage = Integer.valueOf(req.getParameter("currentPage"));
Integer limit = Integer.valueOf(req.getParameter("limit"));
PageDate pageDate = userService.selectPage(currentPage,limit);
Long totalPage = pageDate.getTotalPage();
//System.out.println(totalPage+"=totalPage");
req.setAttribute("pageDate",pageDate);
req.getRequestDispatcher("/main.jsp").forward(req,resp);
//JsonResultWriter .writerJson(resp,pageDate);
}
三,service层逻辑代码实现
//分页查询
public PageDate selectPage(Integer currentPage, Integer limit) {
PageDate pageDate = new PageDate();
pageDate.setCurrentPage(currentPage);
pageDate.setLimit(limit);
//当前页显示数据 分页 start = (currentPage - 1)* limit;
Integer start = (currentPage - 1)* limit;
List<User> usrs = userDao.selectPage(start,limit);
pageDate.setData(usrs);
//数据总条数
List<User> users = userDao.getAll();
pageDate.setTotal(Long.valueOf(users.size()));
return pageDate;
}
四,dao层代码实现
//分页查询
public List<User> selectPage(Integer start, Integer limit) {
QueryRunner queryRunner = new QueryRunner(DruidUtil.getDataSource());
String sql = "select * from user limit ?,?";
try {
List<User> users = queryRunner.query(sql, new BeanListHandler<User>(User.class), start, limit);
return users;
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}