pageable设置size_Spring的Pageable分页剖析
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分页剖析相关推荐
- pageable设置size_spring – 设置JPA Pageable Object的默认页面大小
如果您正在讨论 Spring Data PagingAndSortingRepository,可以使用Controller方法上的@PageableDefault设置默认页面大小,如下所示: publ ...
- pageable设置size_使用Pageable 分页
1. service层 封装 packagecom.example.demo.service;importjava.util.List;importorg.springframework.data.d ...
- pageable设置size_SpringdDataJpa如何创建一个不分页,但是排序的pageable
2020-07-16 更新一波 今天看到有个小哥在这个里面评论说他也报错了,报了UnsupportedOperationException 这跟之前题主说的报错也是差不多,就是我的方案总之会报错 但是 ...
- pageable设置size_分页工具一Pageable与Page
import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Page; 1.Page ...
- poi设置excel打印时分页操作
poi设置excel打印时分页操作 使用poi的Sheet对象 Workbook desWorkbook = new HSSFWorkbook();Sheet desSheet = desWorkbo ...
- pageable设置size_总结SpringBoot使用Pageable实现分页源码
之前写过一篇mybatis-plus的文章,但是有朋友说技术太过简单了,想让我写一下分页什么的技术,这里想跟大家解释一下:因为刚开始在这种平台上写文章,确实是写的慢,并且,有些技术我自己也没怎么使用过 ...
- pageable设置size_SpringBoot分页Pageable 自定义配置最大size
起因 在工作中,涉及到导出的功能,由于导出和搜索的结果是相同的,所以导出和搜索是同一接口.但由于搜索的分页是每页10条,而导出却是没有条数限制的,所以引出下面的问题 controller方法如下: @ ...
- spring心得5--构造器注入@设置控制@案例加注解剖析
1.设置引用空对象的情况 设置null: <property name="barlist"> <null/> </property> 这种设置多 ...
- js设置html打印不分页,web 页面分页打印的实现
1.首先引入一个WebBrowser在需要打印的页面,可以直接添加: 到页面,或者使用JavaScript在需要的时候临时添加也可以: document.body.insertAdjacentHTML ...
最新文章
- PAT(甲级)2021年春季考试 7-4 Recycling of Shared Bicycles
- 临河智慧城管:让城市更和谐
- 一个苏州IT人的5年挨踢经历-------经历篇(之三)
- check_mk自定义监控实践之powershell
- PyTorch 之 DataLoader
- Thymeleaf文档
- 计算机二级考试字处理表格和文字分栏,Exce表格分栏打印输出的两种巧妙方法...
- 实战|QUIC协议助力腾讯业务提速30%
- cl_ibase_ibintx_buf buffer class
- Exchange_Server_2013在Windows_2008_R2部署
- java定义一个方法,返回a的b次方
- mysql数据库年龄_sql获取时间、年龄
- 软件定义网络(Software Defined Network )
- Pytorch基础(五)nn模块及optimizer
- 从零开始的机器人比赛(一)——项目准备篇
- oracle数据库恢复aul_ORACLE恢复神器之ODU/AUL/DUL
- HDI板和盲埋孔电路板的区别
- 面试问题:发一个随机红包,100块钱给10个人。每个人最多12块钱,最少6块钱。怎么分?
- LoRa点对点系统3 与PC接口
- 计算机网络实验子网划分与路由器配置,实验5子网划分路由配置