我是靠谱客的博主 朴素热狗,最近开发中收集的这篇文章主要介绍Java后端数据分页问题前言一、简易分页二、使用Page工具封装分页(Mybatis)总结,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

文章目录

  • 前言
  • 一、简易分页
  • 二、使用Page工具封装分页(Mybatis)
    • 1.定义相关方法及工具
    • 2.后端方法
  • 总结


前言

Java后端数据分页问题。


一、简易分页

前端传入分页起始页start,及每页展示数据条数length

Integer pageNum = (showDTO.getStart() == 0) ? 1 : showDTO.getStart();
Integer pageSize = (showDTO.getLength() == 0) ? 10 : showDTO.getLength();

使用如下方法重新设置要传入后端的数据。将起始页转化为第几条数据开始,将如下参数作为sql语句中Limit A,B传入,AstartBlength

showDTO.setStart((pageNum - 1) * pageSize);
showDTO.setLength(pageSize);

例如:

SELECT * FROM tableA
LIMIT #{showDTO.start} , #{showDTO.length}

二、使用Page工具封装分页(Mybatis)

使用page工具就不需要再sql中加上Limit语句。

1.定义相关方法及工具

引入下面两个包:

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;

自定义封装方法ResutBean(设置需要返回给前端的数据):

@Data
public class ResultBean<T> {
    //当前页码
    private int start;
    //每页显示条数
    private int length;
    // 总页数
    private int totalPages;
    // 当前页展示条数
    private int iTotalDisplayRecords;
    // 总条数
    private Long iTotalRecords;
    // 数据列表
    private List<T> data;
    @JsonProperty("iTotalDisplayRecords")
    public int getITotalDisplayRecords() {
        return iTotalDisplayRecords;
    }
    @JsonProperty("iTotalRecords")
    public Long getITotalRecords() {
        return iTotalRecords;
    }
}

自定义工具类CommUtil(只使用了需要的方法,可根据需求进行修改):

public class CommonUtil {
    public static <T> ResultBean<T> getResultByPageInfo(PageInfo<T> pageInfo){
        ResultBean<T> resultBean = new ResultBean<>();
        //当前页码
        resultBean.setStart(pageInfo.getPageNum());
        // 每页显示条数
        resultBean.setLength(pageInfo.getPageSize());
        // 总条数
        resultBean.setITotalRecords(pageInfo.getTotal());
        // 总页数
        resultBean.setTotalPages(pageInfo.getPages());
        // 当前页展示条数
        resultBean.setITotalDisplayRecords(pageInfo.getList().size());
        resultBean.setData(pageInfo.getList());
        return resultBean;
    }
}

2.后端方法

实例代码如下:

	public ResponseBean<ResultBean<ReturnParamVO>> getPage(SearchParamDTO searchParam) {
	    ResponseBean<ResultBean<ReturnParamVO>> responseBean;
	    try {
	        // 查询结果集对象
	        PageHelper.startPage(searchParam.getStart(), searchParam.getLength());
	        PageInfo<ReturnParamVO> pageInfo = new PageInfo<>( searchMapper.selectList(searchParam));
	        responseBean = new ResponseBean<>("0","查询列表成功!", CommonUtil.getResultByPageInfo(pageInfo));
	    }catch (Exception e){
	        log.error("查询列表出现异常:" + e.getMessage(), e);
	        responseBean = new ResponseBean<>("1","查询列表出现异常:" + e.getMessage(), null);
	    }
	    log.info("查询列表结束");
	    return responseBean;
	}

SearchParam中封装前端传入参数,其中start是页码,length是每页多少条数据。
PageIHelper存在局限性,其上不能紧挨着查询其他list的方法,否则查询会失败。且new PageInfo<>(xxx)中必须为需要进行分页的Mapper方法,否则sql中会配置不上Limit语句。


总结

两种分页方法各有好处和缺点,根据情况进行使用。

最后

以上就是朴素热狗为你收集整理的Java后端数据分页问题前言一、简易分页二、使用Page工具封装分页(Mybatis)总结的全部内容,希望文章能够帮你解决Java后端数据分页问题前言一、简易分页二、使用Page工具封装分页(Mybatis)总结所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(44)

评论列表共有 0 条评论

立即
投稿
返回
顶部