pageable设置size_总结SpringBoot使用Pageable实现分页源码
之前写过一篇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实现分页源码相关推荐
- Vue+SpringBoot进销存管理系统源码【源码免费分享】
淘源码-国内专业的免费源码下载平台 Vue+SpringBoot进销存管理系统源码 源码免费分享,需要学习可私信我. 系统介绍: 这是一款面向中小企业的供销链管理系统,基于J2EE快速开发平台Jeec ...
- JavaScript实现countSetBits设置位的数量算法(附完整源码)
JavaScript实现countSetBits设置位的数量算法(附完整源码) countSetBits.js完整源代码 countSetBits.js完整源代码 export default fun ...
- clickhouse原理解析与开发实战 pdf_Spring全家桶集合:SpringBoot+SpringCloud实战,Spring源码原理...
一.Spring技术内幕(电子书籍赠送) 深入解析Spring架构与设计原理 本书探讨了Spring框架的设计原理.架构和运行机制.作为在Java领域最为成功的开源软件之一,Spring在Java E ...
- android ctrl 左键鼠标左键直接打开xml文件夹,设置Android Studio通过Ctrl+左键查看源码...
开始学习android的时候希望能点进系统提供的控件中查看源码,但是实际操作发现,看到的每个源文件方法都是抛出的Exception,所以想要设置成可以直接查看具体实现,记录下我自己的操作方法. 1.首 ...
- springboot+vue社区维修平台(源码+文档)
风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农.今天要和大家聊的是一款基于springboot的社区维修平台.项目源码以及部署相关请联系风歌,文末附上联系信息 . 目前有各类成品j ...
- javauniapp+SpringBoot即时通讯聊天软件源码
uniapp+SpringBoot即时通讯聊天软件源码,前端使用uniapp,后端使用SpringBoot. 手机端使用uniapp实现,目前仅支持安卓端和iOS端,小程序端和H5端暂未做适配. 下载 ...
- 基于微信小程序的springboot客运汽车票购票系统源码和论文
在客运公司工作 7 年之余,对客运管理的难度深有感触.特别是在春运期 间购票难依旧是长途汽车订票的一大难题.长途汽车和火车的订票管理虽然有 差异,但大体上是相同的.长途汽车在售票的过程中需要对旅客的起 ...
- 计算机毕业设计springboot酒店客房管理系统8yj0v源码+系统+程序+lw文档+部署
计算机毕业设计springboot酒店客房管理系统8yj0v源码+系统+程序+lw文档+部署 计算机毕业设计springboot酒店客房管理系统8yj0v源码+系统+程序+lw文档+部署 本源码技术栈 ...
- springboot自动配置文件读取以及源码分析
今天来讲讲springboot自动配置文件读取以及源码分析 springboot启动之后 1.首先进入@springbootApplication(如上图) 里面的**@EnableAutoConfi ...
最新文章
- 富士通推出MB95200H/10H/20H系列用于家电的LPC微控制器
- Spring:SpringMVC一例
- python从ip端口 获取数据_python 如何获得Ip地址和端口啊?
- 股票连续投资历史收益计算
- 配置树莓派3和局域网NTP服务器实现内网时间校准
- UIScrollView事件拦截
- Linux系统文件类型 特殊文件 和 进程间通信机制
- 有人说,互联网电商把1000个实体店老板赚的钱,让10个互联网电商赚走了
- 亚马逊力推以太坊,微软谷歌准备跟进!
- 每个Java程序员必须知道的5个JVM命令行标志
- 多图详解freeBSD8.2安装过程
- 【多目标优化求解】基于matlab人工鱼群求解多目标优化问题【含Matlab源码 442期】
- 《商务与经济统计》(一)
- 二元logistic回归前的单因素分析
- 计算机网络技术毕业生实习报告_计算机网络毕业实习报告
- VS2015安装包损坏或丢失的方法_2022年7月
- 关于系统分析师的考试感想
- JAVA走上证券行业
- PS-制作燃烧的字体
- 运维干到35岁,还能干多久?
热门文章
- docker 删除镜像时报错Error response from daemon: conflict: unable to delete xxx (must be forced) -
- Bash、Terminal通过tab忽略大小写自动补全命令行提示
- linux 卸载ninja,Linux下数据库管理工具:DbNinja
- android+动画+锯齿,Android_rotate--animation 动画旋转两图片,消除动画锯齿现象 android 开发:动画旋转两图片 - 下载 - 搜珍网...
- 在C语言中如何让常量起作用,解析C语言中如何正确使用const
- python3 pygame 坦克自动移动
- Interface接口
- JDBC结合JSP使用(2)
- uC/OS 的任务调度解析
- Lisp的本质(The Nature of Lisp)