# **分页配置**
配置代码 此处不需要改动
~~~
package com.common;
import com.constants.Constants;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class PageParamRequest {
@ApiModelProperty(value = "页码", example= Constants.DEFAULT_PAGE + "")
private int page = Constants.DEFAULT_PAGE;
@ApiModelProperty(value = "每页数量", example = Constants.DEFAULT_LIMIT + "")
private int limit = Constants.DEFAULT_LIMIT;
}
~~~
配置常量
~~~
package com.constants;
public class Constants {
//默认分页页码
public static final int DEFAULT_PAGE = 1;
//默认分页每页数量
public static final int DEFAULT_LIMIT = 20;
//此处省略无数其余常量配置
}
~~~
1. 如果想修改默认分页数值,请修改 DEFAULT_LIMIT 的值即可,这块会在前端不传递分页参数的时候起作用,或者自己new 分页参数类的时候起作用。
2. 分页参数的最终值以前端传递为准
3. 需要分页的时候在 *ServiceImpl文件的具体方法里,执行sql之前加一行代码
~~~
PageHelper.startPage(pageParamRequest.getPage(), pageParamRequest.getLimit());
~~~
4. 如果最终方法返回的类和当前分页的时候映射的类不相同,例如当前业务是 class a,需要返回 class b,那么需要处理下数据。下文看文章这块如何处理
~~~
/**
* 文章列表
* @param request ArticleSearchRequest 请求参数
* @param pageParamRequest 分页类参数
* @author Mr.Zhang
* @since 2020-04-18
* @return List<Article>
*/
@Override
public PageInfo<ArticleVo> getList(ArticleSearchRequest request, PageParamRequest pageParamRequest) {
//需要做赋值操作
Page<Article> articlePage = PageHelper.startPage(pageParamRequest.getPage(), pageParamRequest.getLimit());
LambdaQueryWrapper<Article> lambdaQueryWrapper = new LambdaQueryWrapper<>();
if(StringUtils.isNotBlank(request.getCid())){
lambdaQueryWrapper.eq(Article::getCid, request.getCid());
}
if(!StringUtils.isBlank(request.getKeywords())){
lambdaQueryWrapper.and(i -> i.or().like(Article::getTitle, request.getKeywords())
.or().like(Article::getAuthor, request.getKeywords())
.or().like(Article::getSynopsis, request.getKeywords())
.or().like(Article::getShareTitle, request.getKeywords())
.or().like(Article::getShareSynopsis, request.getKeywords()));
}
if(request.getIsBanner() != null){
lambdaQueryWrapper.eq(Article::getIsBanner, request.getIsBanner());
}
if(request.getIsHot() != null){
lambdaQueryWrapper.eq(Article::getIsHot, request.getIsHot());
}
if(request.getHide() != null){
lambdaQueryWrapper.eq(Article::getHide, request.getHide());
}
if(request.getStatus() != null){
lambdaQueryWrapper.eq(Article::getStatus, request.getStatus());
}
if(null != request.getIsHaveMediaId()){
lambdaQueryWrapper.isNotNull(Article::getMediaId).ne(Article::getMediaId, "");
}
lambdaQueryWrapper.orderByDesc(Article::getSort).orderByDesc(Article::getVisit).orderByDesc(Article::getCreateTime);
List<Article> articleList = dao.selectList(lambdaQueryWrapper);
ArrayList<ArticleVo> articleVoArrayList = new ArrayList<>();
if(articleList.size() < 1){
return CommonPage.copyPageInfo(articlePage, articleVoArrayList);
}
for (Article article : articleList) {
ArticleVo articleVo = new ArticleVo();
BeanUtils.copyProperties(article, articleVo);
if(!StringUtils.isBlank(article.getImageInput()) ){
articleVo.setImageInput(CrmebUtil.jsonToListString(article.getImageInput()));
articleVo.setImageInputs(article.getImageInput());
}
articleVoArrayList.add(articleVo);
}
//需要通过复制转化分页类指定的对象
return CommonPage.copyPageInfo(articlePage, articleVoArrayList);
}
~~~
分页操作类
~~~
package com.common;
import com.constants.Constants;
import lombok.Data;
import org.springframework.beans.BeanUtils;
import org.springframework.data.domain.Page;
import com.github.pagehelper.PageInfo;
import java.util.ArrayList;
import java.util.List;
@Data
public class CommonPage<T> {
private Integer page = Constants.DEFAULT_PAGE;
private Integer limit = Constants.DEFAULT_LIMIT;
private Integer totalPage = 0;
private Long total = 0L ;
private List<T> list = new ArrayList<>();
/**
* 将PageHelper分页后的list转为分页信息
*/
public static <T> CommonPage<T> restPage(List<T> list) {
CommonPage<T> result = new CommonPage<T>();
PageInfo<T> pageInfo = new PageInfo<T>(list);
result.setTotalPage(pageInfo.getPages());
result.setPage(pageInfo.getPageNum());
result.setLimit(pageInfo.getPageSize());
result.setTotal(pageInfo.getTotal());
result.setList(pageInfo.getList());
return result;
}
/**
* 将SpringData分页后的list转为分页信息
*/
public static <T> CommonPage<T> restPage(Page<T> pageInfo) {
CommonPage<T> result = new CommonPage<T>();
result.setTotalPage(pageInfo.getTotalPages());
result.setPage(pageInfo.getNumber());
result.setLimit(pageInfo.getSize());
result.setTotal(pageInfo.getTotalElements());
result.setList(pageInfo.getContent());
return result;
}
/**
* 将PageHelper分页后的 PageInfo 转为分页信息
*/
public static <T> CommonPage<T> restPage(PageInfo<T> pageInfo) {
CommonPage<T> result = new CommonPage<T>();
result.setTotalPage(pageInfo.getPages());
result.setPage(pageInfo.getPageNum());
result.setLimit(pageInfo.getPageSize());
result.setTotal(pageInfo.getTotal());
result.setList(pageInfo.getList());
return result;
}
/**
* 对象A复制对象B的分页信息 //TODO 多次数据查询导致分页数据异常解决办法
*/
public static <T> PageInfo<T> copyPageInfo(com.github.pagehelper.Page originPageInfo, List<T> list) {
PageInfo<T> pageInfo = new PageInfo<>(list);
BeanUtils.copyProperties(originPageInfo, pageInfo, "list");
return pageInfo;
}
}
~~~
在控制器里需要用下面代码来接受分页类的信息作为数据输出
~~~
CommonPage.restPage(articleService.getList(request, pageParamRequest))
~~~
对外输出JSON下面自动封装
~~~
/**
* 分页显示文章管理表
* @param request ArticleSearchRequest 搜索条件
* @param pageParamRequest 分页参数
* @author Mr.Zhang
* @since 2020-04-18
*/
@ApiOperation(value = "分页列表")
@RequestMapping(value = "/list", method = RequestMethod.GET)
@ApiImplicitParam(name="keywords", value="搜索关键字")
public CommonResult<CommonPage<ArticleVo>> getList(@Validated ArticleSearchRequest request,
@Validated PageParamRequest pageParamRequest){
return CommonResult.success(CommonPage.restPage(articleService.getList(request, pageParamRequest)));
}
~~~
- 序言
- 快速上手
- 项目架构图
- App功能图
- Admin功能图
- 快速了解
- 快速开始
- 本地开发
- 服务器及系统搭建
- 服务器购买
- 域名购买(已有域名则跳过)
- 域名解析
- 服务器配置
- 宝塔配置
- 创建站点
- 服务部署
- Docker预览
- 新手入门
- 运行项目和打包前准备
- Java项目运行和打包
- VUE WEB PC 管理端运行和打包
- Uniapp 移动端运行和打包
- 第三方
- 客服_腾讯云智服
- 客服_蚂蚁智能客服
- 复制第三方平台商品99API
- 公众号
- 公众号配置
- 公众号开发配置
- 公众号设置菜单
- 公众号设置关键字
- 公众号设置跳转网页
- 公众号设置跳转小程序
- uniapp打包H5、公众号
- 公众号模板消息
- 微信小程序
- 微信平台配置
- CRMEB后台配置
- 微信小程序提交审核
- 微信小程序版本发布
- 微信小程序订阅消息
- 微信小程序客服
- 添加微信交易组件
- 秒杀产品
- 支付
- 微信支付配置
- 微信公众号支付
- 微信小程序支付
- 支付宝支付
- App
- 1、基础配置
- 2、开发调试
- 4、打包上线
- 5、APP打包
- 6、App升级
- 使用说明
- 首页
- 商品分类
- 分类说明
- 分类管理
- 普通产品
- 发布商品
- 商品规格
- 商品评价
- 前台页面
- 产品详情
- 产品热门搜索
- 营销
- 优惠券
- 发布优惠券
- 领取及使用
- 积分
- 积分设置
- 积分来源
- 积分使用
- 秒杀配置维护
- 秒杀商品维护
- 砍价管理
- 砍价规则
- 砍价活动
- 拼团管理
- 拼团规则
- 拼团活动
- 视频号管理
- 草稿列表
- 一号通
- 商品列表
- 微信视频号直播
- 分销
- 分销配置
- 分销规则说明
- 分销员管理
- 提现
- 佣金提现
- 发起提现
- 后台审核
- 本地存储
- 会员等级
- 七牛云存储
- 等级说明
- 腾讯云存储
- 文章管理
- 阿里云存储
- 文章界面
- 发布文章
- 订单管理
- 后台订单处理
- 订单退款
- 订单打印
- 账户管理
- 账号信息
- 账户资金
- 邮费说明
- 邮费组成
- 商城运费设置
- 运费模板
- 设置
- 系统配置
- 商品采集
- 物流查询
- 电子面单
- 短信
- 管理权限
- 身份管理
- 管理员列表
- 权限管理
- 物流配置
- 文件上传配置
- 提货点
- 设置提货点
- 核销员
- 核销订单
- 页面管理
- 一键换色
- 页面设计
- 第三方接口设置
- 物流查询
- 库存说明
- 统计管理
- 首页看板
- 商品统计
- 用户统计
- 交易统计
- 常见问题
- 服务器配置相关
- 宝塔redis设置密码
- 前端项目部署在一个nginx下通过目录访问
- java项目常见问题
- Swagger 后台 API 文档
- Java项目日志
- start.sh启动报错
- 退款问题
- win服务出现乱码问题
- WEB PC 管理端常见问题
- WEB PC页面刷新和富文本上传图片404
- npm镜像问题
- 测试环境微信授权弹出提示框
- 文件上传
- 后台管理系统登录问题
- 后台核销人员通过移动端核销订单
- npm install github出错暴力解决(仅限此项目)
- 运费模板查询出错
- 取消掉粒子效果
- 素材提供
- 移动端相关问题
- 微信开发工具上传代码超包
- 支付成功但订单显示失败
- 移动端刷新404
- 小程序生成推二维码失败
- 图片问题
- 图片素材导入
- 一键换色
- 源码问题
- 代码怎么下载和更新
- 1.3.7更新
- 支付相关
- 商户平台添加支付授权目录
- 业务常见问题
- 版权
- 移动端基本介绍
- 首页
- 分类页
- 个人中心
- WEB PC 管理端基本介绍
- 后台前端目录结构
- 前端开发配置
- 前端配置说明
- 前端添加页面
- 前端引用组件
- 前端构建和发布
- 技术文档
- 配置
- 目录结构
- 项目
- Crmeb
- 移动端
- PC后台
- 开发规范
- 数据字典
- 任务
- 组合数据
- 后台表单说明
- 拦截器
- 过滤器
- MyBatis-Plus
- 无限级分类设计
- 分页配置
- 必看内容
- 七牛云
- 本地存储
- 七牛云存储
- 腾讯云存储
- 阿里云存储
- 附录
- 视频教程
- Java 后台程序
- WEB PC 管理端
- Uniapp 移动端
- 二开锦囊
- 集成第三方SDK
- 阿里
- 短信