手动实现SpringMVC Mybatis 数据真分页

4 篇文章 0 订阅
3 篇文章 0 订阅

一、思路

  • 返回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}
        //起始位置   页面大小
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值