ssm中封装的分页类

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

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(" 
"); //判断是否显示上一页(如果当前页数大于0,说明当前不在第一页就是应该显示上一页) if(pageCount-1>0) { sb.append("+url+"?pageCount=" + (pageCount - 1) + "&pageSize="+pageSize+"\">上一页"); } 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("+url+"?pageCount="+i+"&pageSize="+pageSize+"\">第"+i+"页"); }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("+url+"?pageCount="+i+"&pageSize="+pageSize+"\">第"+i+"页"); }else{ shu=0; break; } } }else{ //不是整数说明还有下一页 for(int i=pageCount ;i<=zongCount/pageSize+1;i++){ shu++; //设置每页显示5个按钮 if(shu<6){ sb.append("+url+"?pageCount="+i+"&pageSize="+pageSize+"\">第"+i+"页"); }else{ shu=0; break; } } } }else{ if(zongCount%pageSize<=0) { for (int i = 1; i <= zongCount / pageSize; i++) { shu++; //设置每页显示5个按钮 if (shu < 6) { sb.append(" + url + "?pageCount=" + i + "&pageSize=" + pageSize + "\">第" + i + "页"); } else { shu = 0; break; } } }else{ for (int i = 1; i <= zongCount / pageSize+1; i++) { shu++; //设置每页显示5个按钮 if (shu < 6) { sb.append(" + url + "?pageCount=" + i + "&pageSize=" + pageSize + "\">第" + i + "页"); } else { shu = 0; break; } } } } } //判断是否显示下一页(如果当前页数小于了总页数就不显示下一页) if(pageCount"+url+"?pageCount=" + (pageCount + 1) + "&pageSize="+pageSize+"\">下一页"); } sb.append("
"
); //对设置每页条数的输入框进行拼接 sb.append("
" + "
" + "每页:
"
+ "
"
); if(zongCount%pageSize<=0) { sb.append(" 当前:" + pageCount + "/" + zongCount / pageSize + "" ); }else{ sb.append(" 当前:" + pageCount + "/" + (zongCount / pageSize)+1 + "" ); } sb.append("
"
+ ""); 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 queryPage(Integer pageCount, Integer pageSize) {
        pageUtil.setPageCount(pageCount);//设置分页当前页数
        pageUtil.setPageSize(pageSize);//设置分页的每页条数
        pageUtil.setUrl("work/query.do");//设置点击按钮访问的链接
        List listCount=kaoqinMapper.queryAll();
        pageUtil.setZongCount(listCount.size());//设置所有数据的条数
        List list = kaoqinMapper.queryKaoqin(pageUtil);
        return list;
    }

}

你可能感兴趣的:(ssm,分页)