当前位置: 首页 > news >正文

SpringBoot_整合PageHelper

分页插件/PageHelper插件

我们在正常的查询业务之中,只需要加上一行代码就可以实现分页的数据的封装处理

实现原理

PageHelper方法使用了静态的ThreadLocal参数,分页参数和线程是绑定的。内部流程是ThreadLocal中设置了分页参数(pageIndex,pageSize),之后在查询执行的时候,获取当线程中的分页参数,执行查询的时候通过拦截器在sql语句中添加分页参数,之后实现分页查询,查询结束后在 finally 语句中清除ThreadLocal中的查询参数

使用方法

1.调用PageHelper方法:PageHelper.startPage(pageNum, pageSize)

2. MyBatis 查询方法

注意:只要你可以保证在PageHelper方法调用后紧跟 MyBatis 查询方法,这就是安全的。因为PageHelper在finally代码段中自动清除了ThreadLocal存储的对象。

MyBatis整合PageHelper插件参考:mybatis中pageHelper的配置使用_铛铛响的博客-CSDN博客 

整合步骤

一 添加PageHelper启动器依赖

	<dependency>
	    <groupId>com.github.pagehelper</groupId>
	    <artifactId>pagehelper-spring-boot-starter</artifactId>
	    <version>1.2.12</version>
	</dependency>

二 在service层使用PageHelper.startPage(pageNum, pageSize)即可,第一个参数是当前页,第二个参数是页大小

@Autowired
    private EmpMapper empMapper;

    @Override
    public List<Emp> findAll(int pageNum, int pageSize) {
        Page<Emp> emps = PageHelper.startPage(pageNum, pageSize);
        PageInfo pageInfo = new PageInfo(emps);
        System.out.println("当前页" + pageInfo.getPageNum());
        System.out.println("总页数" + pageInfo.getPages());
        System.out.println("页大小" + pageInfo.getSize());
        System.out.println("总记录数" + pageInfo.getTotal());
        System.out.println("当前页数据" + pageInfo.getList());
        return empMapper.findAll();
    }

三  在Controller层理传入参数

@Autowired
    private EmpService empService;

    @ResponseBody
    @GetMapping("findPageEmp/{pageNum}/{pageSize}")
    public PageInfo findPageEmp(@PathVariable("pageNum") int pageNum, @PathVariable("pageSize")int pageSize) {
        List<Emp> emps = empService.findAll(pageNum, pageSize);

       return new PageInfo(emps);

    }

PageInfo对象和Page对象的区别

Page和PageInfo_程序员^晓洋的博客-CSDN博客_page和pageinfo

 

 

 

相关文章:

  • 【数据结构与算法】一套链表 OJ 带你轻松玩转链表
  • C/C++大学课程信息系统
  • 【网络编程】第三章 网络套接字(TCP协议程序+多进程+多线程+线程池)
  • 基于物联网设计的自反馈深紫外杀菌消毒系统(STM32F407)
  • react路由v6版本NavLink的两个小坑及解决
  • CSDN第11期周赛总结
  • 编程语言介绍
  • 【火灾检测】森林火灾检测系统(带面板)【含GUI Matlab源码 1921期】
  • Tomcat经验2
  • 为什么说C++太复杂(复杂到哪了?)
  • k8s部署手册-v03
  • 基于keras与tensorflow手工实现ResNet50网络
  • c语言中常用的字符串处理函数总结
  • ESP-01S使用AT指令连接阿里云
  • 第十四届蓝桥杯模拟赛第二期部分题答案(C++代码)
  • angular组件开发
  • CSS魔法堂:Absolute Positioning就这个样
  • docker容器内的网络抓包
  • Druid 在有赞的实践
  • JavaScript 事件——“事件类型”中“HTML5事件”的注意要点
  • Vue ES6 Jade Scss Webpack Gulp
  • 关于springcloud Gateway中的限流
  • 源码之下无秘密 ── 做最好的 Netty 源码分析教程
  • 正则与JS中的正则
  • Linux权限管理(week1_day5)--技术流ken
  • mysql 慢查询分析工具:pt-query-digest 在mac 上的安装使用 ...
  • 分布式关系型数据库服务 DRDS 支持显示的 Prepare 及逻辑库锁功能等多项能力 ...
  • 哈罗单车融资几十亿元,蚂蚁金服与春华资本加持 ...
  • 曾刷新两项世界纪录,腾讯优图人脸检测算法 DSFD 正式开源 ...
  • 专访Pony.ai 楼天城:自动驾驶已经走过了“从0到1”,“规模”是行业的分水岭| 自动驾驶这十年 ...
  • ​2020 年大前端技术趋势解读
  • ​MySQL主从复制一致性检测
  • #pragma pack(1)
  • (Matalb时序预测)PSO-BP粒子群算法优化BP神经网络的多维时序回归预测
  • (附源码)spring boot儿童教育管理系统 毕业设计 281442
  • (附源码)ssm高校运动会管理系统 毕业设计 020419
  • (切换多语言)vantUI+vue-i18n进行国际化配置及新增没有的语言包
  • (三十五)大数据实战——Superset可视化平台搭建
  • (十七)devops持续集成开发——使用jenkins流水线pipeline方式发布一个微服务项目
  • (十三)Java springcloud B2B2C o2o多用户商城 springcloud架构 - SSO单点登录之OAuth2.0 根据token获取用户信息(4)...
  • (四) Graphivz 颜色选择
  • (四)搭建容器云管理平台笔记—安装ETCD(不使用证书)
  • (算法)N皇后问题
  • (一)使用IDEA创建Maven项目和Maven使用入门(配图详解)
  • (原創) 如何優化ThinkPad X61開機速度? (NB) (ThinkPad) (X61) (OS) (Windows)
  • .net core 6 redis操作类
  • .Net 访问电子邮箱-LumiSoft.Net,好用
  • .net反编译工具
  • .NET精简框架的“无法找到资源程序集”异常释疑
  • .net实现客户区延伸至至非客户区
  • .pyc文件还原.py文件_Python什么情况下会生成pyc文件?
  • .sh文件怎么运行_创建优化的Go镜像文件以及踩过的坑
  • []FET-430SIM508 研究日志 11.3.31
  • [20170705]lsnrctl status LISTENER_SCAN1
  • [Android]RecyclerView添加HeaderView出现宽度问题