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<ConstructionLog> 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中并未指定表 进行管理)

<select id="findLogToDayEssence" resultType="int">
    select
    count(1)
    from construction_log where date(log_time) = DATE_SUB(current_date(),interval #{result} day)
  </select>

mapper

<select id="findTodayLog" parameterType="com.bing.utils.PageTools" resultMap="BaseResultMap">
    select
    <include refid="Base_Column_List" />,bu.user_Name AS userName,bur.user_Name AS userName
    from construction_log cl LEFT JOIN  base_user bu on bu.USER_ID = cl.USER_ID
    LEFT JOIN base_user bur on bur.USER_ID = cl.LOG_TOUSET
    where date(log_time) = DATE_SUB(current_date(),interval #{result} day)
    ORDER by LOG_TIME DESC
    LIMIT #{pageNumber,jdbcType=VARCHAR},#{pageSize,jdbcType=VARCHAR}
  </select>

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

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值