之前写过一篇mybatis-plus的文章,但是有朋友说技术太过简单了,想让我写一下分页什么的技术,这里想跟大家解释一下:因为刚开始在这种平台上写文章,确实是写的慢,并且,有些技术我自己也没怎么使用过,就是一边学习,觉得不错,然后就写上来,或者工作中刚好用到,就把代码粘贴上来(在不违反公司规定的情况下,因为我所在的公司有点特殊,程序猿朋友应该都懂),之前看人家写的感觉挺简单的,但实际真的不是那么简单,非常耗费时间和精力,所以,希望大家有什么问题可以在文章下方讨论,想要看什么技术我在有时间的情况下也会进行更新的,大家一起努力学习,毕竟我也不是什么特别牛逼的大神,别着急哈

今天我从我的git中截取了部分通过SpringBoot实现分页的代码,希望对大家有所帮助,觉得有帮助的麻烦点个关注,谢谢

首先是我从网上找到的一般分页的代码(对于基础的朋友可以看一下,有工作经验的可以划过,谢谢)

1   public class PageBean {  2     private int curPage;             //当前页  3     private int pageCount;           //总页数  4     private int rowsCount;           //总行数  5     private int pageSize=10;         //每页多少行  6       7       8       9     public PageBean(int rows){  10           11         this.setRowsCount(rows);  12         if(this.rowsCount % this.pageSize == 0){  13             this.pageCount=this.rowsCount / this.pageSize;  14         }  15         else if(rows<this.pageSize){  16             this.pageCount=1;  17         }  18         else{  19             this.pageCount=this.rowsCount / this.pageSize +1;  20         }  21     }  22       23       24     public int getCurPage() {  25         return curPage;  26     }  27     public void setCurPage(int curPage) {  28         this.curPage = curPage;  29     }  30     public int getPageCount() {  31         return pageCount;  32     }  33     public void setPageCount(int pageCount) {  34         this.pageCount = pageCount;  35     }  36     public int getPageSize() {  37         return pageSize;  38     }  39     public void setPageSize(int pageSize) {  40         this.pageSize = pageSize;  41     }  42     public int getRowsCount() {  43         return rowsCount;  44     }  45     public void setRowsCount(int rowsCount) {  46         this.rowsCount = rowsCount;  47     }  48 }

分页展示如下:

 1 List clist=adminbiz.queryNotFullCourse();//将查询结果存放在List集合里  2 PageBean pagebean=new PageBean(clist.size());//初始化PageBean对象  3 //设置当前页  4 pagebean.setCurPage(page); //这里page是从页面上获取的一个参数,代表页数  5 //获得分页大小  6 int pagesize=pagebean.getPageSize();  7 //获得分页数据在list集合中的索引  8 int firstIndex=(page-1)*pagesize;  9 int toIndex=page*pagesize;  10 if(toIndex>clist.size()){  11     toIndex=clist.size();  12 }  13 if(firstIndex>toIndex){  14     firstIndex=0;  15     pagebean.setCurPage(1);  16 }  17 //截取数据集合,获得分页数据  18 List courseList=clist.subList(firstIndex, toIndex);

接下来是重头戏,就是通过SpringBoot使用Pageable实现分页,由于之前在项目中用到过这个,就觉得不错,我就稍微的整理了一下然后简单记录到Git中,今天刚好,拿出来分享给大家(更多的是提供一个思路,不是完整的代码,不好意思)

  在此记录一下操作案例。

Pageable pageable = new PageRequest(page, size, Sort.Direction.DESC, "key");

  下面简单介绍一下上面的这一行代码:

Pageable 必须引用spring的包。否则后面是不能new PageRequest的!!!!

page即当前页。
size代表每页有几条记录。
第三个参数是排序字段, Sort.Direction.DESC是倒序的意思。
最后一个参数是排序关键字,将按照这个关键字进行排序。

  介绍完这个方法本身,下面介绍数据库操作。使用Pageable 时不能使用原生sql。但是这个地方我遇到一个问题:官网说能用原生的,我也百度了许多的例子,但是都运行不起来。当时为了完成任务我就用了我自己的办法,后来也就因为工作忙我就放下没在研究,有知道的朋友下方可以评论区告诉我,谢谢,下面讲我的办法:

@Query(" from LoginTable k where k.loginName = ?1")public PagegetLoginInfo(String loginName, Pageable pageable);

不用在@Query中使用value=和nativeQuery = true
形参里面加一个Pageable pageable
使用实体类的类型:LoginTable ,而不是数据库类型:login_table
接收参数使用Page<>,而不是List<>
表名起别名,通过别名去调用。(我遇到的问题,不起别名调不到)

  数据库操作介绍完了,下面介绍一下调用:

Page<LoginTable> pageList = loginRepository.getLoginInfo(loginName,pageable);

依旧使用Page接收
形参加pageable(此时的pageable应该是已经定义好的,有当前页,页容量,排序字段等属性)

后期我回去更新上来,觉得今天的文章有点帮助的,帮忙点个关注支持一下,有更好的实现方式的,可以评论区和我说,我的那个问题也可以和我讨论一下呀,大家一起成长

END—

关注作者微信公众号 —《Java架构师联盟》

了解更多java后端架构知识以及最新面试宝典

你点的每个好看,我都认真当成了

看完本文记得给作者点赞+在看哦~~~大家的支持,是作者源源不断出文的动力。

pageable设置size_总结SpringBoot使用Pageable实现分页源码相关推荐

  1. Vue+SpringBoot进销存管理系统源码【源码免费分享】

    淘源码-国内专业的免费源码下载平台 Vue+SpringBoot进销存管理系统源码 源码免费分享,需要学习可私信我. 系统介绍: 这是一款面向中小企业的供销链管理系统,基于J2EE快速开发平台Jeec ...

  2. JavaScript实现countSetBits设置位的数量算法(附完整源码)

    JavaScript实现countSetBits设置位的数量算法(附完整源码) countSetBits.js完整源代码 countSetBits.js完整源代码 export default fun ...

  3. clickhouse原理解析与开发实战 pdf_Spring全家桶集合:SpringBoot+SpringCloud实战,Spring源码原理...

    一.Spring技术内幕(电子书籍赠送) 深入解析Spring架构与设计原理 本书探讨了Spring框架的设计原理.架构和运行机制.作为在Java领域最为成功的开源软件之一,Spring在Java E ...

  4. android ctrl 左键鼠标左键直接打开xml文件夹,设置Android Studio通过Ctrl+左键查看源码...

    开始学习android的时候希望能点进系统提供的控件中查看源码,但是实际操作发现,看到的每个源文件方法都是抛出的Exception,所以想要设置成可以直接查看具体实现,记录下我自己的操作方法. 1.首 ...

  5. springboot+vue社区维修平台(源码+文档)

    风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农.今天要和大家聊的是一款基于springboot的社区维修平台.项目源码以及部署相关请联系风歌,文末附上联系信息 . 目前有各类成品j ...

  6. javauniapp+SpringBoot即时通讯聊天软件源码

    uniapp+SpringBoot即时通讯聊天软件源码,前端使用uniapp,后端使用SpringBoot. 手机端使用uniapp实现,目前仅支持安卓端和iOS端,小程序端和H5端暂未做适配. 下载 ...

  7. 基于微信小程序的springboot客运汽车票购票系统源码和论文

    在客运公司工作 7 年之余,对客运管理的难度深有感触.特别是在春运期 间购票难依旧是长途汽车订票的一大难题.长途汽车和火车的订票管理虽然有 差异,但大体上是相同的.长途汽车在售票的过程中需要对旅客的起 ...

  8. 计算机毕业设计springboot酒店客房管理系统8yj0v源码+系统+程序+lw文档+部署

    计算机毕业设计springboot酒店客房管理系统8yj0v源码+系统+程序+lw文档+部署 计算机毕业设计springboot酒店客房管理系统8yj0v源码+系统+程序+lw文档+部署 本源码技术栈 ...

  9. springboot自动配置文件读取以及源码分析

    今天来讲讲springboot自动配置文件读取以及源码分析 springboot启动之后 1.首先进入@springbootApplication(如上图) 里面的**@EnableAutoConfi ...

最新文章

  1. 富士通推出MB95200H/10H/20H系列用于家电的LPC微控制器
  2. Spring:SpringMVC一例
  3. python从ip端口 获取数据_python 如何获得Ip地址和端口啊?
  4. 股票连续投资历史收益计算
  5. 配置树莓派3和局域网NTP服务器实现内网时间校准
  6. UIScrollView事件拦截
  7. Linux系统文件类型 特殊文件 和 进程间通信机制
  8. 有人说,互联网电商把1000个实体店老板赚的钱,让10个互联网电商赚走了
  9. 亚马逊力推以太坊,微软谷歌准备跟进!
  10. 每个Java程序员必须知道的5个JVM命令行标志
  11. 多图详解freeBSD8.2安装过程
  12. 【多目标优化求解】基于matlab人工鱼群求解多目标优化问题【含Matlab源码 442期】
  13. 《商务与经济统计》(一)
  14. 二元logistic回归前的单因素分析
  15. 计算机网络技术毕业生实习报告_计算机网络毕业实习报告
  16. VS2015安装包损坏或丢失的方法_2022年7月
  17. 关于系统分析师的考试感想
  18. JAVA走上证券行业
  19. PS-制作燃烧的字体
  20. 运维干到35岁,还能干多久?

热门文章

  1. docker 删除镜像时报错Error response from daemon: conflict: unable to delete xxx (must be forced) -
  2. Bash、Terminal通过tab忽略大小写自动补全命令行提示
  3. linux 卸载ninja,Linux下数据库管理工具:DbNinja
  4. android+动画+锯齿,Android_rotate--animation 动画旋转两图片,消除动画锯齿现象 android 开发:动画旋转两图片 - 下载 - 搜珍网...
  5. 在C语言中如何让常量起作用,解析C语言中如何正确使用const
  6. python3 pygame 坦克自动移动
  7. Interface接口
  8. JDBC结合JSP使用(2)
  9. uC/OS 的任务调度解析
  10. Lisp的本质(The Nature of Lisp)