PageRequest extends AbstractPageRequest 而 AbstractPageRequset implements Pageable

first:

写一个接受分页参数的PageRequest类(工具类)(这样就不用自己去写get、set等方法),当然也可以不写,直接使用对应的参数去接收(Controller层)

public static PageRequest getGridPageParams() {

int pageNumber = 0;

int pageSize = 20;

HttpServletRequest request = ServiceUtil.getRequest();

String P_pageNumber = request.getParameter("P_pageNumber");

String P_pagesize = request.getParameter("P_pagesize");

String order = request.getParameter("P_orders");

String stringDirection = request.getParameter("sord");

PageRequest pageRequest = null;

if (null != P_pageNumber) {

pageNumber = Integer.parseInt(P_pageNumber) - 1;

}

if (null != P_pagesize) {

pageSize = Integer.parseInt(P_pagesize);

}

if (order != null && stringDirection != null) {

Direction direction = Direction.fromString(stringDirection);

Sort sort = new Sort(direction, order);

pageRequest = new PageRequest(pageNumber, pageSize, sort);

return pageRequest;

}

pageRequest = new PageRequest(pageNumber, pageSize);

return pageRequest;

}

second:

将分页参数传给真正的spring进行管理

@GetMapping("/list")

@ResponseBody

public CommonAjaxResult getDappKindList(DappKind dappKind) {

Pageable pageable = PageUtil.getGridPageParams();//获得封装的分页data

Sort sort = new Sort(Sort.Direction.DESC, "createTime");

Pageable page = PageRequest.of(pageable.getPageNumber(), pageable.getPageSize(), sort);

Page result = dappKindService.findByPage(dappKind, page);//调service层

PageVo pageVo = PageUtil.parseFromPage(result);//方法如下(更友好的显示给前端)

if(null != pageVo){

return CommonAjaxResult.success(pageVo);

}

return CommonAjaxResult.error("获取列表失败,请稍后再试");

}

public static PageVo parseFromPage(Page page) {

PageVo pageVo = new PageVo();

pageVo.setData(page.getContent());

pageVo.setPageNumber(page.getNumber() + 1);

pageVo.setPageSize(page.getSize());

pageVo.setTotal(page.getTotalElements());

pageVo.setTotalPages(page.getTotalPages());

return pageVo;

}

third:

在service层中进行查询条件的处理

public Page findByPage(DappKind dappKind, Pageable pageable) {

Specification specification = getWhereClause(dappKind);

return dappKindRepository.findAll(specification, pageable);//调jpa中方法

}

/**

* 查询条件的处理

*/

private Specification getWhereClause(final DappKind dappKind) {

return new Specification() {

@Override

public Predicate toPredicate(Root root, CriteriaQuery> query, CriteriaBuilder cb) {

List list = new ArrayList<>();

if (StringUtils.isNotBlank(dappKind.getId())) {

list.add(cb.equal(root.get("id").as(String.class), dappKind.getId()));

}

if (StringUtils.isNotBlank(dappKind.getName())) {

list.add(cb.like(root.get("name").as(String.class), "%" + dappKind.getName() + "%"));

}

list.add(cb.equal(root.get("status").as(String.class), DappKind.dappKindStatus.NORMAL));

Predicate[] p = new Predicate[list.size()];

return cb.and(list.toArray(p));

}

};

}

Simple Version (需要自己去写SQL(SQL中不需要关注分页参数)Mybatis帮助你实现了分页)

public AjaxResult pageList(Distribute model, Pageable pageable) {

Page pageObject = distributeService.pageList(param_map, pageable);

}

pageable设置size_Spring的Pageable分页剖析相关推荐

  1. pageable设置size_spring – 设置JPA Pageable Object的默认页面大小

    如果您正在讨论 Spring Data PagingAndSortingRepository,可以使用Controller方法上的@PageableDefault设置默认页面大小,如下所示: publ ...

  2. pageable设置size_使用Pageable 分页

    1. service层 封装 packagecom.example.demo.service;importjava.util.List;importorg.springframework.data.d ...

  3. pageable设置size_SpringdDataJpa如何创建一个不分页,但是排序的pageable

    2020-07-16 更新一波 今天看到有个小哥在这个里面评论说他也报错了,报了UnsupportedOperationException 这跟之前题主说的报错也是差不多,就是我的方案总之会报错 但是 ...

  4. pageable设置size_分页工具一Pageable与Page

    import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Page; 1.Page ...

  5. poi设置excel打印时分页操作

    poi设置excel打印时分页操作 使用poi的Sheet对象 Workbook desWorkbook = new HSSFWorkbook();Sheet desSheet = desWorkbo ...

  6. pageable设置size_总结SpringBoot使用Pageable实现分页源码

    之前写过一篇mybatis-plus的文章,但是有朋友说技术太过简单了,想让我写一下分页什么的技术,这里想跟大家解释一下:因为刚开始在这种平台上写文章,确实是写的慢,并且,有些技术我自己也没怎么使用过 ...

  7. pageable设置size_SpringBoot分页Pageable 自定义配置最大size

    起因 在工作中,涉及到导出的功能,由于导出和搜索的结果是相同的,所以导出和搜索是同一接口.但由于搜索的分页是每页10条,而导出却是没有条数限制的,所以引出下面的问题 controller方法如下: @ ...

  8. spring心得5--构造器注入@设置控制@案例加注解剖析

    1.设置引用空对象的情况 设置null: <property name="barlist"> <null/> </property> 这种设置多 ...

  9. js设置html打印不分页,web 页面分页打印的实现

    1.首先引入一个WebBrowser在需要打印的页面,可以直接添加: 到页面,或者使用JavaScript在需要的时候临时添加也可以: document.body.insertAdjacentHTML ...

最新文章

  1. PAT(甲级)2021年春季考试 7-4 Recycling of Shared Bicycles
  2. 临河智慧城管:让城市更和谐
  3. 一个苏州IT人的5年挨踢经历-------经历篇(之三)
  4. check_mk自定义监控实践之powershell
  5. PyTorch 之 DataLoader
  6. Thymeleaf文档
  7. 计算机二级考试字处理表格和文字分栏,Exce表格分栏打印输出的两种巧妙方法...
  8. 实战|QUIC协议助力腾讯业务提速30%
  9. cl_ibase_ibintx_buf buffer class
  10. Exchange_Server_2013在Windows_2008_R2部署
  11. java定义一个方法,返回a的b次方
  12. mysql数据库年龄_sql获取时间、年龄
  13. 软件定义网络(Software Defined Network )
  14. Pytorch基础(五)nn模块及optimizer
  15. 从零开始的机器人比赛(一)——项目准备篇
  16. oracle数据库恢复aul_ORACLE恢复神器之ODU/AUL/DUL
  17. HDI板和盲埋孔电路板的区别
  18. 面试问题:发一个随机红包,100块钱给10个人。每个人最多12块钱,最少6块钱。怎么分?
  19. LoRa点对点系统3 与PC接口
  20. 计算机网络实验子网划分与路由器配置,实验5子网划分路由配置

热门文章

  1. 一文全览:企业上云的难点、方向、策略、架构和实践步骤
  2. 翻译 - Kafka 介绍
  3. 电子线路设计技巧4:ATT7022E电流采样电路
  4. ESP32 MicroPython开发之旅 基础篇② —— MicroPython 执行过程
  5. 微信跳一跳java实现自动跳_微信跳一跳自动连跳挂java源码
  6. UCOSII学习之路1 - 任务创建、删除、挂起、解挂
  7. inflater用法
  8. Failed to load session “ubuntu”的解决办法
  9. DB2复制表结构及数据
  10. 管理之困:居高不下的流动率