JPA 扩展SimpleJpaRepository.findAll,支持页数为-1的全部查询
来源:互联网 发布:网站内链优化 编辑:程序博客网 时间:2024/06/07 10:29
业务场景
公司前端框架引用了datatable.js,分页格式如下图所示,支持10,20,50,100,全部,前面数字页面可直接通过Spring组装对象传入JPA完成分页,但全部查询失败。
解决方案
1、查找datatable.js源码中关于分页参数,找到如下代码
"lengthMenu": [[10, 20, 50, 100, -1],[10, 20, 50, 100, "全部"]],
由此可知当我们页面选择“全部”的时候,页面传入后台页数参数为-1
2、查找JPA中的关于“查找全部”函数,找到如下符合我们判断页数的函数
public Page<T> findAll(Specification<T> spec, Pageable pageable) { TypedQuery<T> query = getQuery(spec, pageable); return pageable == null ? new PageImpl<T>(query.getResultList()) : readPage(query, pageable, spec); }
由此可知,JPA中判断了pageable是否为空,为空的时候返回全部内容,不为空的时候根据请求的页数请求对应的分页数据。 因此只要我们在这里支持页数为-1的时候分页即可,判断为-1的时候我们置pageable=null,这样就可以返回全部数据了,新增代码之后的代码下
public Page<T> findAll(Specification<T> spec, Pageable pageable) { TypedQuery<T> query = getQuery(spec, pageable); /**新增内容开始*/ //当判断前台传来的页数为-1的时候,手动置pageable为null if(pageable.getPageSize()==-1){ pageable = null; } /**新增内容结束*/ return pageable == null ? new PageImpl<T>(query.getResultList()) : readPage(query, pageable, spec); }
阅读全文
1 0
- JPA 扩展SimpleJpaRepository.findAll,支持页数为-1的全部查询
- 如何扩展 JPA Annotation 以更好的支持 OR Mapping
- spirng data jpa查询中支持的关键字
- jpa 中的一对多,多对一关系设置,可直接用findall方法查询出所需的数据,非常方便
- 为AjaxHelper0.51进一步扩展JSRS的MVC支持及一个基于JSRS的Whois查询范例
- Hibernate查询返回list全部为null的解决方案
- 使用re.findall返回一个查询的列表
- 转 -- 如何扩展 JPA Annotation 以更好的支持 OR Mapping
- JPA的自适应查询
- JPA的视图查询
- jpa的in查询
- 扩展cxLookupComboBox,使其支持多列查询的cxLookupComboBoxEx
- 超过notes最大所能支持的页数
- 扩展Bootstrap-table插件使其支持通过下拉框快速跳转至任意页数
- JPA查询语言(1)
- Spring DATA JPA 中findAll 进行OrderBy
- Spring DATA JPA 中findAll 进行OrderBy
- 查询数据页数
- 论文实践学习
- 继承和多态
- JAVA工具类(6)---IPUtil工具类(获取window与linux的本地ip及客户端ip)
- css day01
- 面对对象之封装
- JPA 扩展SimpleJpaRepository.findAll,支持页数为-1的全部查询
- WOJ1315-高级机密
- C/C++笔试题
- java初学 Java语法基础练习题
- java1
- ubuntu16.04+CUDA8.0+cuDNN5.1+opencv2.4.13+Anaconda的caffe编译过程
- java.lang.ArithmeticException
- android 修改底层wifi 文件信息
- angular指令监听ng-repeat渲染完成