java实现ssm分页工具类及其使用方法

      分享一下我现在所使用的分页工具类,不像网上的那么规范 纯属自己总结根据逻辑敲出来的,基于mysql的limit来做分页。有不对的地方还望大佬指出,直接上代码

    PageTools

package com.bing.utils;

/**
 * Created by Lenovo on 2018/2/5.
 * 分页工具类
 */
public class PageTools {
    private int pageSize;//显示多少个

    private int pageIndex;//当前页数

    private int pageCount;//总页数

    private int record;//总条数

    private int pageNumber;//计算值

    private Object result;//返回值

    private int nextIndex;//下一页

    private int fristIndex;//上一页

    public int getNextIndex() {
        return nextIndex;
    }

    public int getFristIndex() {
        return fristIndex;
    }

    public int getPageNumber() {
        return pageNumber;
    }

    public void setPageNumber(int pageNumber){
        this.pageNumber = pageNumber;
    }

    public int getPageCount() {
        return pageCount;
    }

    public void setPageCount(int pageCount){
        this.pageCount = pageCount;
    }

    public Object getResult() {
        return result;
    }

    public void setResult(Object result) {
        this.result = result;
    }

    public int getRecord() {
        return record;
    }

    public void setRecord(int record) {
        this.record = record;
        pageCount = record % pageSize == 0 ? record/pageSize : (record/pageSize)+1;//计算共有多少页
        this.pageNumber = (pageIndex == 1 ? 0 : (pageIndex-1)*pageSize);//计算LIMIT的开始个数
    }

    public int getPageSize() {
        return pageSize;
    }

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

    public int getPageIndex() {
        return pageIndex;
    }

    public void setPageIndex(int pageIndex) {
        this.pageIndex = pageIndex;
        this.fristIndex = pageIndex == 1 ? 1 : pageIndex-1;
        this.nextIndex = pageIndex == 1 ? 1 : pageIndex+1;
    }
}

       提醒一下当前页数并不是从0开始的是从1开始的,这个是我与前端的约定,其实约定大于配置这个话以前不懂,知道接触的项目多了才发现配置再多,还是有许多地方需要用到约定。还有,做一个分页你的mapper需要两个方法你需要首先查询到他的总个数赋值到record中进行计算才能进行下一步的分页查询。

例如:

service

 List constructionLogs = null;
        try{
            pageTools.setRecord(actualCountMapper.findLogToDayEssence(pageTools.getResult().toString()));
            constructionLogs = constructionLogMapper.findTodayLog(pageTools);
            resultModel.setError(1);
            resultModel.setErrorCode(WebErrorEnum.YRQT_LOG_SUCCESS.getErrCode());
            resultModel.setMsg(WebErrorEnum.YRQT_LOG_SUCCESS.getErrMsg());
            pageTools.setResult(constructionLogs);
            resultModel.setResult(pageTools);
        }catch (Exception e){
            resultModel.setError(-1);
            resultModel.setErrorCode(WebErrorEnum.YRQT_LOG_ERROR.getErrCode());
            resultModel.setMsg(WebErrorEnum.YRQT_LOG_ERROR.getErrMsg());
        }

count(我们项目中统计我把他都分到了一个单独的mapper.xml中并未指定表 进行管理)

mapper

这样一看就非常的直观了  在这里传值我是听过pageTools来进行传值和查询的比较方便,不用传递多个值了。

好了  大概也就是这了  欢迎评论

你可能感兴趣的:(随笔)