MVC之模糊查询与分页查询整合

一、分页实体类

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>

猜你喜欢

转载自blog.csdn.net/weixin_42496678/article/details/82663554
今日推荐