1 PageBean
package com.li.domain;
import java.util.List;
/**
* @Program: exam
* @ClassName: PageBean
* @Description: 分页查询
* @Author: li
* @Create: 2019-07-23 19:25
*/
public class PageBean<T> {
private Integer currentPage;
private Integer pageSize;
private Integer totalPage;
private Integer totalData;
private List<T> list;
public PageBean(Integer currentPage, Integer pageSize, Integer totalData, List<T> list) {
this.currentPage = currentPage;
this.pageSize = pageSize;
this.totalPage = totalData % pageSize == 0 ? totalData / pageSize : totalData / pageSize + 1;
this.totalData = totalData;
this.list = list;
}
public PageBean() {
}
@Override
public String toString() {
return "PageBean{" +
"currentPage=" + currentPage +
", pageSize=" + pageSize +
", totalPage=" + totalPage +
", totalData=" + totalData +
", list=" + list +
'}';
}
public Integer getCurrentPage() {
return currentPage;
}
public void setCurrentPage(Integer currentPage) {
this.currentPage = currentPage;
}
public Integer getPageSize() {
return pageSize;
}
public void setPageSize(Integer pageSize) {
this.pageSize = pageSize;
}
public Integer getTotalPage() {
return totalPage;
}
public void setTotalPage(Integer totalPage) {
this.totalPage = totalPage;
}
public Integer getTotalData() {
return totalData;
}
public void setTotalData(Integer totalData) {
this.totalData = totalData;
}
public List<T> getList() {
return list;
}
public void setList(List<T> list) {
this.list = list;
}
}
2 DAO
返回模糊分页数据
@Override
public List<User> pageUser(int pageStart, int pageSize, Map<String, String[]> map) {
StringBuilder sql = new StringBuilder();
List<Object> list = new ArrayList<>();
sql.append("select * from user where 1 = 1");
Set<String> sets = map.keySet();
for (String set : sets) {
if ("".equals(map.get(set)[0]) || "".equals(map.get(set)[0])) {
continue;
} else if ("currentPage".equals(set) || "pageSize".equals(set)) {
continue;
} else {
sql.append(" and " + set + " like ?");
list.add("%" + map.get(set)[0] + "%");
}
}
sql.append(" limit ?,?");
list.add(pageStart);
list.add(pageSize);
return jt.query(sql.toString(), new BeanPropertyRowMapper<User>(User.class), list.toArray());
}
返回模糊查询的总数据量
@Override
public int totalData(Map<String, String[]> map) {
StringBuilder sql = new StringBuilder();
List<Object> list = new ArrayList<>();
sql.append("select count(1) from user where 1 = 1");
Set<String> sets = map.keySet();
for (String set : sets) {
if ("".equals(map.get(set)[0]) || "".equals(map.get(set)[0])) {
continue;
} else if ("currentPage".equals(set) || "pageSize".equals(set)) {
continue;
} else {
sql.append(" and " + set + " like ?");
list.add("%" + map.get(set)[0] + "%");
}
}
return jt.queryForObject(sql.toString(), Integer.class, list.toArray());
}
3 services
返回一个pageBean
@Override
public PageBean<User> pageUser(String _pageStart, String _pageSize, Map<String, String[]> map) {
int pageStart = Integer.parseInt(_pageStart);
int pageSize = Integer.parseInt(_pageSize);
List<User> users = dao.pageUser((pageStart - 1) * pageSize, pageSize, map);
int totalData = dao.totalData(map);
return new PageBean<User>(pageStart, pageSize, totalData, users);
}
4 servlet
/**
* @Program: exam
* @ClassName: PageUserServlet
* @Description: 分页加模糊查询User
* @Author: li
* @Create: 2019-07-23 19:29
*/
@WebServlet("/PageUserServlet")
public class PageUserServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Map<String, String[]> map = request.getParameterMap();
String currentPage = request.getParameter("currentPage");
String pageSize = request.getParameter("pageSize");
IUserServices services = new UserServicesImpl();
if(currentPage == null){
currentPage = "1";
}
if(pageSize == null){
pageSize = "5";
}
PageBean<User> pageUser = services.pageUser(currentPage, pageSize,map);
request.setAttribute("pu",pageUser);
request.setAttribute("mp",map);
request.getRequestDispatcher("member-list.jsp").forward(request, response);
}
}
5 jsp
<c:forEach var="user" items="${pu.list}" varStatus="s">
<tr>
<td>
<input type="checkbox" name="id" value="${user.email}" lay-skin="primary">
</td>
<td>${s.index + 1}</td>
<td>${user.email}</td>
<td>${user.username}</td>
<td>${user.sex}</td>
<td>${user.tel}</td>
<td>${user.address}</td>
<c:if test="${user.status == 1}">
<td class="td-status">
<span class="layui-btn layui-btn-normal layui-btn-mini">已启用</span>
</td>
<td class="td-manage">
<a onclick="member_stop(this,'${user.email}')" href="javascript:;"
title="启用">
<i class="layui-icon"></i>
</a>
</c:if>
<c:if test="${user.status == -1}">
<td class="td-status">
<span class="layui-btn layui-btn-normal layui-btn-mini layui-btn-disabled">已拉黑</span>
</td>
<td class="td-manage">
<a onclick="member_stop(this,'${user.email}')" href="javascript:;"
title="拉黑">
<i class="layui-icon"></i>
</a>
</c:if>
<a title="编辑"
onclick="xadmin.open('编辑','FindUserInfoByEmailServlet?email=${user.email}',600,400)"
href="javascript:;">
<i class="layui-icon"></i>
</a>
<a onclick="xadmin.open('修改密码','member-password.jsp?${user.email}',600,400)"
title="修改密码" href="javascript:;">
<i class="layui-icon"></i>
</a>
<a title="删除" onclick="member_del(this,'${user.email}')" href="javascript:;">
<i class="layui-icon"></i>
</a>
</td>
</tr>
</c:forEach>
页码
<div class="layui-card-body ">
<div class="page">
<div>
<c:if test="${pu.currentPage != 1}">
<a class="prev"
href="PageUserServlet?currentPage=${pu.currentPage-1}&pageSize=5&username=${mp.username[0]}&email=${mp.eamil[0]}&tel=${mp.tel[0]}"><<</a>
</c:if>
<c:forEach end="${pu.totalPage}" var="cpage" begin="1">
<c:if test="${pu.currentPage == cpage}">
<span class="current">${cpage}</span>
</c:if>
<c:if test="${pu.currentPage != cpage}">
<a class="num"
href="PageUserServlet?currentPage=${cpage}&pageSize=5&username=${mp.username[0]}&email=${mp.eamil[0]}&tel=${mp.tel[0]}">${cpage}</a>
</c:if>
</c:forEach>
<c:if test="${pu.currentPage != pu.totalPage}">
<a class="next"
href="PageUserServlet?currentPage=${pu.currentPage+1}&pageSize=5&username=${mp.username[0]}&email=${mp.eamil[0]}&tel=${mp.tel[0]}">>></a>
</c:if>
</div>
</div>
</div>