我是靠谱客的博主 朴素热狗,最近开发中收集的这篇文章主要介绍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
传入,A
是start
,B
是length
。
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)总结所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复