手动实现SpringMVC Mybatis 数据真分页

一、思路

  • 返回Map 包含返回的数据 、 分页的HTML代码
  • 真分页使用SQL语句的LIMIT 来规定取数据的范围
  • 传入 当前页码 和 页面数据大小(如10条分一次页)
  • 取数据的开始值为 (当前页面-1)*页面大小

service

public Map<String, Object> getPageList(int currentPage, int pageSize) {
        //数据列表
        Map<String,Object> map = new HashMap<>();
        int page = (currentPage-1)*pageSize; //获取数据开始值
        List<Product> pdList = productMapper.findPageList( page, pageSize);//从写好的Mapper获取数据
        map.put("list",pdList);//添加进Map

        //分页信息
        StringBuffer html = new StringBuffer();
        int listCount = productMapper.pdCount();//获取数据数量
        int pageCount = listCount/pageSize;//计算页面数量
        if(listCount%pageSize != 0){
            pageCount += 1;
        }
        //拼写HTML(layUi)
        html.append("<li class=\"disabled\"><span>"+currentPage+" / "+pageCount+"</span></li>");
        if(currentPage > 1){
            html.append("<li><a href=\"?page=1\">«</a></li>");
            html.append("<li><a href=\"?page="+(currentPage-1)+"\">‹</a></li>");
        }
        if(pageCount <= 10){
            for(int i = 1;i <= pageCount;i++){
                if(i == currentPage){
                    html.append("<li class=\"active\"><span>"+i+"</span></li>");
                }else{
                    html.append("<li><a href=\"?page="+i+"\">"+i+"</a></li>");
                }
            }
        }else{
            if(currentPage >= 10){
                if(currentPage+5 <= pageCount){
                    for(int i = currentPage-4;i <= currentPage+5;i++){
                        if(i == currentPage){
                            html.append("<li class=\"active\"><span>"+i+"</span></li>");
                        }else{
                            html.append("<li><a href=\"?page="+i+"\">"+i+"</a></li>");
                        }
                    }
                }else{
                    for(int i = currentPage-4;i <= pageCount;i++){
                        if(i == currentPage){
                            html.append("<li class=\"active\"><span>"+i+"</span></li>");
                        }else{
                            html.append("<li><a href=\"?page="+i+"\">"+i+"</a></li>");
                        }
                    }
                }
            }else{
                for(int i = 1;i <= 10;i++){
                    if(i == currentPage){
                        html.append("<li class=\"active\"><span>"+i+"</span></li>");
                    }else{
                        html.append("<li><a href=\"?page="+i+"\">"+i+"</a></li>");
                    }
                }
            }
        }
        if(currentPage < pageCount){
            html.append("<li><a href=\"?page="+(currentPage+1)+"\">›</a></li>");
            html.append("<li><a href=\"?page="+pageCount+"\" >»</a></li>");
        }

        map.put("page",html.toString());//放入Map


        return map;
    }

Mybatis SQL (productMapper.findPageList())

		select *
        from s_product
        ORDER BY pd_id DESC
        LIMIT #{page},#{pageSize}
        //起始位置   页面大小
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章