一、分页实体类
PageBean.java
public class PageBean {
private int nowPage;
private int pageSize = 5;
private int totalCount;//总的记录数
private int totalPage;//总的页数
private int start;//开启记录
//当前这一页的数据
private List<?> list;public int getNowPage() {
return nowPage;
}public void setNowPage(int nowPage) {
this.nowPage = nowPage;
}public int getPageSize() {
return pageSize;
}public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}public int getTotalCount() {
return totalCount;
}public void setTotalCount(int totalCount) {
this.totalCount = totalCount;
}/**
* 计算总的页数
* @return
*/
public int getTotalPage() {
return (getTotalCount()%getPageSize()==0?getTotalCount()/getPageSize():getTotalCount()/getPageSize()+1);
}public void setTotalPage(int totalPage) {
this.totalPage = totalPage;
}public int getStart() {
return (getNowPage()-1)*getPageSize();
}public void setStart(int start) {
this.start = start;
}public List<?> getList() {
return list;
}public void setList(List<?> list) {
this.list = list;
}
二、分页+模糊查询
UserDaoImpl.java
@Override
public List<Users> findUsersByPage(Users u, PageBean pageBean) {
StringBuilder sb = new StringBuilder("select * from users where status!=0 ");
List list = new ArrayList<>();
if (u!=null) {
if (StringUtils.isNotBlank(u.getName())) {
sb.append(" and name like ?");
list.add("%"+u.getName()+"%");
}
if (u.getStartDate()!=null&&u.getEndDate()!=null) {
sb.append(" and hiredate between ? and ?");
list.add(u.getStartDate());
list.add(u.getEndDate());
}
}
sb.append(" order by id desc");//降序排序
sb.append(" limit ?,?");
list.add(pageBean.getStart());
list.add(pageBean.getPageSize());
try {
return runner.query(sb.toString(),new BeanListHandler<>(Users.class), list.toArray());
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}@Override
public int getTotalCount(Users u) {
StringBuilder sb = new StringBuilder("select count(*) from users where status!=0 ");
List list = new ArrayList<>();
if (u!=null) {
if (StringUtils.isNotBlank(u.getName())) {
sb.append(" and name like ?");
list.add("%"+u.getName()+"%");
}
if (u.getStartDate()!=null&&u.getEndDate()!=null) {
sb.append(" and hiredate between ? and ?");
list.add(u.getStartDate());
list.add(u.getEndDate());
}
}
Long count = 0l;
try {
count = (Long) runner.query(sb.toString(), new ScalarHandler(),list.toArray());
return Integer.parseInt(count+"");
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return 0;
}
UserService.java
public PageBean findByPage(Users u,PageBean pageBean);
UserServiceImpl.java
@Override
public PageBean findByPage(Users u, PageBean pageBean) {
List<Users> list = usersDao.findUsersByPage(u, pageBean);
int totaoCount = usersDao.getTotalCount(u);
pageBean.setList(list);
pageBean.setTotalCount(totaoCount);
return pageBean;
}
UserServlet.java
private void findByPage(HttpServletRequest request, HttpServletResponse response) throws IOException {
Users u = new Users();
String name =request.getParameter("name");
u.setName(name);
PageBean pageBean = new PageBean();
//指定查看第几页
int nowPage = 1;
String currentPage = request.getParameter("nowPage");
if (StringUtils.isNotBlank(currentPage)) { //判断是否为空,注意后台接受来的数据为String类型
nowPage = Integer.parseInt(currentPage);
}
pageBean.setNowPage(nowPage);
pageBean = usersService.findByPage(u, pageBean);//存储到域对象
request.getSession().setAttribute("pageBean", pageBean);
request.getSession().setAttribute("u", u);
response.sendRedirect("userList.jsp");
}
三、模糊和分页整合
//分页部分的点击事件
<script>
$("#fenye a").click(function(){
var nowPage = $(this).attr("href");
$("#nowPage").val(nowPage);
$("#mySearchForm").submit();
return false; //阻止浏览器默认行为
});
});
</script><div align="center" style="font-size: 25px;" id="fenye">
<form action="billServlet" method="post" id="mySearchForm">
。。。。。
<a href="1" >首页</a>
<!-- 判断 -->
<c:if test="${pageBean.nowPage>1 }">
<a href="${pageBean.nowPage-1 }">上一页</a>
</c:if><c:if test="${pageBean.nowPage<pageBean.totalPage }">
<a href="${pageBean.nowPage+1 }">下一页</a>
</c:if>
<a href="${pageBean.totalPage }">末页</a>
第${pageBean.nowPage }页,总共${pageBean.totalPage }页<input type="text" name="nowPage" id="mypage"> 表单中必须包含这句话,因为需要传递nowPage的值
</div>