ssm中封装的分页类

3 篇文章 0 订阅

自己封装了分页类的内容,方便以后留着使用

package com.chen.util;

import org.springframework.stereotype.Component;

import java.util.regex.Pattern;

/**
 * 分页的类中的样式使用的是bootstrap的样式进行编写的,如果觉得不好就要源码中修改样式
 * 使用分页需要传递几个参数
 * 1.当前页数(在action中进行截取参数pageCount然后set到此类中的pageCount中)
 * 2.每页数据个数(在action中进行截取参数pageSize然后set到此类中的pageSize中)
 * 3.总数据数(使用查询所有数据的方法将返回的条数set到zongCount中)
 * 4.设置访问的链接(使用set方法对点击按钮访问的链接进行设置)
 * 5.最后将pageUtil类传到页面,在需要分页的页面中使用el表达式将类中的button属性取出即可
 */
@Component
public class PageUtil {


    private Integer pageCount;//当前页数(需要使用set方法设置)
    private Integer pageSize;//每页数据个数(需要使用set方法设置,放入sql中)
    private Integer firstCount;//每页从哪开始(计算出来的属性,放入sql中)
    private Integer zongCount;//总数据的数(需要使用set方法设置)
    private String button;//返回给页面的按钮组(自动拼接出来不需要处理)
    private String url;//设置访问的链接(需要使用set方法设置)


    public Integer getFirstCount() {
        return firstCount=(this.getPageCount()-1)*this.getPageSize();
    }

    public void setFirstCount(Integer firstCount) {
        this.firstCount = firstCount;
    }
    /*
    * 对分页按钮进行封装,使用字符串进行拼接
    * */
    public String getButton() {
        StringBuffer sb=new StringBuffer();
        sb.append(" <div class=\"btn btn-group\">");
        //判断是否显示上一页(如果当前页数大于0,说明当前不在第一页就是应该显示上一页)
        if(pageCount-1>0) {
            sb.append("<a class=\"btn btn-primary\" href=\"/"+url+"?pageCount=" + (pageCount - 1) + "&pageSize="+pageSize+"\">上一页</a>");
        }
        int shu=0;
        //如果到了最后四个选项的时候,就一直显示最后是个选项了(7,8,9,10.....7,8,9,10.....7,8,9,10)
        //如果想每页显示五个按钮就-4   想每页显示4个按钮就-3 以此类推
        if(pageCount>=(zongCount/pageSize-4) && (zongCount/pageSize-4)>0){
            for(int i=(zongCount/pageSize-4) ;i<=zongCount/pageSize;i++){
                shu++;
                //设置每页显示5个按钮(想每页显示5个按钮就小于6  else中的同理)
                if(shu<6){
                    sb.append("<a class=\"btn btn-primary\" href=\"/"+url+"?pageCount="+i+"&pageSize="+pageSize+"\">第"+i+"页</a>");
                }else{
                    shu=0;
                    break;
                }
            }
        }else {
            System.out.println(zongCount%pageSize);
            //如果计算出来的页数小于5,也就是说按钮个数小于等于5个,那就要从1开始计算按钮了
            if((zongCount/pageSize-4)>0){
                //正常显示选项(1,2,3,4.....2,3,4,5.....3,4,5,6)
                if(zongCount%pageSize<=0){
                    //是整数
                    for(int i=pageCount ;i<=zongCount/pageSize;i++){
                        shu++;
                        //设置每页显示5个按钮
                        if(shu<6){
                            sb.append("<a class=\"btn btn-primary\" href=\"/"+url+"?pageCount="+i+"&pageSize="+pageSize+"\">第"+i+"页</a>");
                        }else{
                            shu=0;
                            break;
                        }
                    }
                }else{
                    //不是整数说明还有下一页
                    for(int i=pageCount ;i<=zongCount/pageSize+1;i++){
                        shu++;
                        //设置每页显示5个按钮
                        if(shu<6){
                            sb.append("<a class=\"btn btn-primary\" href=\"/"+url+"?pageCount="+i+"&pageSize="+pageSize+"\">第"+i+"页</a>");
                        }else{
                            shu=0;
                            break;
                        }
                    }
                }
            }else{
                if(zongCount%pageSize<=0) {
                    for (int i = 1; i <= zongCount / pageSize; i++) {
                        shu++;
                        //设置每页显示5个按钮
                        if (shu < 6) {
                            sb.append("<a class=\"btn btn-primary\" href=\"/" + url + "?pageCount=" + i + "&pageSize=" + pageSize + "\">第" + i + "页</a>");
                        } else {
                            shu = 0;
                            break;
                        }
                    }
                }else{

                    for (int i = 1; i <= zongCount / pageSize+1; i++) {
                        shu++;
                        //设置每页显示5个按钮
                        if (shu < 6) {
                            sb.append("<a class=\"btn btn-primary\" href=\"/" + url + "?pageCount=" + i + "&pageSize=" + pageSize + "\">第" + i + "页</a>");
                        } else {
                            shu = 0;
                            break;
                        }
                    }
                }
            }

        }

        //判断是否显示下一页(如果当前页数小于了总页数就不显示下一页)
        if(pageCount<zongCount/pageSize || pageCount*pageSize<zongCount) {
            sb.append("<a class=\"btn btn-primary\" href=\"/"+url+"?pageCount=" + (pageCount + 1) + "&pageSize="+pageSize+"\">下一页</a>");
        }
        sb.append("</div>");
        //对设置每页条数的输入框进行拼接
        sb.append("<div class='form form-horizontal'>" +
                "<div class='form-group col-sm-12 text-right'>" +
                "<lable class='text-right col-sm-1'>每页:</lable><div class='col-sm-3'><input id='pageSize' class='form-control' type='number' name='pageSize' value='"+pageSize+"'  /></div>" +
                "<div class=' col-sm-2'><input type='button' class='btn btn-info' onclick='queding()' value='确定' /></div>" );
                if(zongCount%pageSize<=0) {
            sb.append("      <lable  class='text-left col-sm-2'>当前:" + pageCount + "/" + zongCount / pageSize + "</lable>" );
                }else{
            sb.append("       <lable  class='text-left col-sm-2'>当前:" + pageCount + "/" + (zongCount / pageSize)+1 + "</lable>" );
                 }
        sb.append("   </div></div>" +
                "<script type='text/javaScript'>" +
                "function queding(){" +
                "    var size=document.getElementById('pageSize').value;" +
                "    if(size==''){  " +
                "        size=0;  " +
                "    }" +
                "    if(parseInt(size)<=0){  " +
                "     alert('请选择大于0的数');    " +
                "    }else{" +
                "       window.location.href='/"+url+"?pageSize='+size+''        " +
                "    } " +
                "}" +
                "</script>");
        button=sb.toString();
        return button;
    }

    public void setButton(String button) {
        this.button = button;
    }

    public Integer getZongCount() {
        return zongCount;
    }

    public void setZongCount(Integer zongCount) {
        this.zongCount = zongCount;
    }

    public Integer getPageCount() {
        if(pageCount==null){
            //初始状态页是第一页
            pageCount=1;
        }
        return pageCount;
    }

    public void setPageCount(Integer pageCount) {

        this.pageCount = pageCount;
    }

    public Integer getPageSize() {
        if(pageSize==null){
            //如果没有设置每页显示多少个的话就默认是5
            pageSize=5;
        }
        return pageSize;
    }

    public void setPageSize(Integer pageSize) {
        this.pageSize = pageSize;
    }

    public String getUrl() {
        return url;
    }

    /**
     * 判断是否为整数
     * @param str
     * @return
     */
    public static boolean isInteger(Integer str) {
        Pattern pattern = Pattern.compile("^[-\\+]?[\\d]*$");
        return pattern.matcher(str.toString()).matches();
    }
    public void setUrl(String url) {
        this.url = url;
    }
}


使用方法直接在service中的内容,service中的两个参数是从controller中接收后传递到service中的

@Service
public class WorkServiceImpl implements WorkService {
    @Resource
    private PageUtil pageUtil;
    @Resource
    private KaoqinMapper kaoqinMapper;

    public List<Kaoqin> queryPage(Integer pageCount, Integer pageSize) {
        pageUtil.setPageCount(pageCount);//设置分页当前页数
        pageUtil.setPageSize(pageSize);//设置分页的每页条数
        pageUtil.setUrl("work/query.do");//设置点击按钮访问的链接
        List<Kaoqin> listCount=kaoqinMapper.queryAll();
        pageUtil.setZongCount(listCount.size());//设置所有数据的条数
        List<Kaoqin> list = kaoqinMapper.queryKaoqin(pageUtil);
        return list;
    }

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值