PageHelper的使用

十八0618

我们的目标是星辰大海!

​关注他

24 人赞同了该文章

PageHelper

pagehelper是mybatis的一个插件,其作用是更加方便地进行分页查询

分页查询的实现有两种方式

1:直接在sql中使用 limit子句 进行分页查询

limit关键字的用法是:LIMIT [offset,] rows

select * from tableA limit 5,5;

Ps1:offset是相对于首行的偏移量(首行是0),rows是返回条数

Ps2:mapper中可以传变量,即在实际使用的时候 “offset与rows”可以用变量替代

2:使用第三方库进行分页查询,如mybatis的插件pagehelper

使用PageHelper的好处是在实际项目开发中更方便

原因是:在项目中我们执行一个分页查询时,很多时候还会需要知道该查询的其他信息,如总数、每页数量、当前页数、上一页或下一页等等,这些信息如果每次都自己写的话就太麻烦了,而pagehelper能够帮助我们更方便地获取这些信息,大大方便了我们的开发效率。

PageHelper在SpringBoot中的使用

一:导入插件

1:pom.xml中导入依赖

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

注意导入的依赖是spring版本的而不是其独立版本,否则pagehelper将不起作用

2:在springboot配置文件(applicable.yml)中声明插件

#pagehelper分页插件配置
pagehelper:helperDialect: mysqlreasonable: truesupportMethodsArguments: trueparams: count=countSql

二:在业务代码中使用

1:UserMapper

@Repository
@Mapper
public interface UserMapper {public List<User> selectAll();
}

2:UserMapper.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.springboot.springboot_mybatis.mapper.UserMapper"><select id="selectAll" resultType="User">select * from user</select>
</mapper>

优点:不需要使用limit

3:实体类

4:service层

5:service实现类

@Service
public class QueryUser2 implements Query2 {@AutowiredUserMapper userMapper;@Overridepublic List<User> selectAll(int pageNum,int pageSize) {PageHelper.startPage(pageNum,pageSize);List<User> users = userMapper.selectAll();PageInfo<User> pageInfo = new PageInfo<>(users);return pageInfo.getList();}
}

注意:只有紧跟着PageHelper.startPage(pageNum,pageSize)的sql语句才被pagehelper起作用

再次注意:经过再次验证,上面这句话不是扯淡

6:control类

@RestController
public class controller3 {@AutowiredQuery2 query2;@GetMapping("/selectAll")public List<User> selectAll(@Param("pageNum") int pageNum, @Param("pageSize") int pageSize){List<User> users = query2.selectAll(pageNum,pageSize);return users;}
}

使用中遇到的问题及tips:

1:在使用时pagehelper不起作用

注意pom.xml导入的依赖应该是spring版本的而不是其独立的版本

2:注意:只有紧跟着PageHelper.startPage()的sql语句才被pagehelper起作用

@Service
public class QueryUser2 implements Query2 {@AutowiredUserMapper userMapper;@Overridepublic List<User> selectAll(int pageNum,int pageSize) {PageHelper.startPage(pageNum,pageSize);List<User> users = userMapper.selectAll();System.out.println(users);List<User> users1 = userMapper.selectAll();System.out.println(users1);PageInfo<User> pageInfo = new PageInfo<>(users);return pageInfo.getList();}}

控制台的输出

Page{count=true, pageNum=2, pageSize=2, startRow=2, endRow=4, total=8, pages=4, reasonable=true, pageSizeZero=false}[User{username='wangwu', age=20, address='fujian'}, User{username='dsdfds', age=23, address='eree'}]
[User{username='zhangsan', age=18, address='beijin'}, User{username='lisi', age=17, address='tianjing'}, User{username='wangwu', age=20, address='fujian'}, User{username='dsdfds', age=23, address='eree'}, User{username='dfwfd', age=22, address='dfdfd'}, User{username='dfdsettythg', age=45, address='ghgf'}, User{username='ggghgd', age=54, address='dfdf'}, User{username='dfdeg', age=21, address='fghgd'}]

可以看到只有紧跟着PageHelper.startPage()的那一句起了作用(注意,经过再次验证,这里不是扯淡,其原理可能是“PageHelper.startPage(pageNum,pageSize)在使用的时候启动了一个线程,致使了其能达到这个效果”)

注意,根据控制台可以得知,查询语句的返回结果“users”已经是分页之后的结果了,上面的例子没有写错;将users再传入PageInfo的目的是为了去除暂时用不到的其他信息,得到纯净的数据库信息:pageInfo.getList()

3:PageInfo的信息非常全,查询的个数、上一页、下一页等等信息都有,以上面springboot中的例子为例

PageInfo{pageNum=2, pageSize=2, size=2, startRow=3, endRow=4, total=8, pages=4, list=Page{count=true, pageNum=2, pageSize=2, startRow=2, endRow=4, total=8, pages=4, reasonable=true, pageSizeZero=false}[User{username='wangwu', age=20, address='fujian'}, User{username='dsdfds', age=23, address='eree'}], prePage=1, nextPage=3, isFirstPage=false, isLastPage=false, hasPreviousPage=true, hasNextPage=true, navigatePages=8, navigateFirstPage=1, navigateLastPage=4, navigatepageNums=[1, 2, 3, 4]}

发布于 2021-01-17 21:08

PageHelper的使用相关推荐

  1. Spring Boot 整合Pagehelper(为什么PageHelper分页不生效)

    引入包 https://mvnrepository.com/artifact/com.github.pagehelper/pagehelper-spring-boot-starter/1.2.10 & ...

  2. Mybatis插件原理和PageHelper结合实战分页插件(七)

    今天和大家分享下mybatis的一个分页插件PageHelper,在讲解PageHelper之前我们需要先了解下mybatis的插件原理.PageHelper 的官方网站:https://github ...

  3. PageHelper 使用 ThreadLocal 的线程复用问题

    欢迎关注方志朋的博客,回复"666"获面试宝典 来源:https://blog.csdn.net/qq_38245668/article/details/105984171/ 前言 ...

  4. SpringBoot + Mybatis + Druid + PageHelper 实现多数据源并分页

    点击关注公众号,Java干货及时送达 本篇文章主要讲述的是SpringBoot整合Mybatis.Druid和PageHelper 并实现多数据源和分页.其中SpringBoot整合Mybatis这块 ...

  5. PageHelper 在 Spring Boot + MyBatis 中合理且规范的使用方法

    点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 一. 开发准备 1. 开发工具 IntelliJ IDEA ...

  6. Spring Boot + MyBatis + Druid + PageHelper 实现多数据源并分页

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 作者 | 虚无境 链接 | cnblogs.com/xuwujin ...

  7. SpringBoot+Mybatis+ Druid+PageHelper 实现多数据源并分页

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 作者: 虚无境 cnblogs.com/xuwujing/p/89 ...

  8. 使用boostrap组件结合PageHelper完成javaweb网页的分页功能

    1.将bootstrap导入到已配置完成的ssm框架中 (1)复制boostrap所需文件到项目根目录下 (2)因为在web.xml中DispatcherServlet拦截所有静态资源.所以在spri ...

  9. 简单看看PageHelper的配置

    为什么80%的码农都做不了架构师?>>>    在java代码中对于PageHelper的配置 @Beanpublic SqlSessionFactory sqlSessionFac ...

  10. 解决使用mybatis分页插件PageHelper的一个报错问题

    解决使用mybatis分页插件PageHelper的一个报错问题 参考文章: (1)解决使用mybatis分页插件PageHelper的一个报错问题 (2)https://www.cnblogs.co ...

最新文章

  1. python 函数变量_Python函数中的变量和函数返回值
  2. 似水流年,美丽清华园
  3. 双边滤波器在灰度和彩色图像处理中的应用
  4. centos下rmp包离线下载
  5. Linux系统用户和用户组介绍
  6. Vue学习笔记(一)—— 什么时候需要import Vue from 'vue'
  7. java开发 职业技能_java编程开发程序员需要具备哪些职业技能
  8. make找不到linux内核函数,linux内核make menuconfig出错
  9. ​Python中面向对象的编程
  10. python3 模板库_[zz]尝试PyTenjin --号称最快的Python 模板库
  11. 嵌入式Linux系统编程学习之二十一命名管道(FIFO)
  12. 下载proteus-isis时出现的错误
  13. 【比特率和波特率】bit rate VS baud rate
  14. Report Machine(RM)报表控件简单用法-delphi
  15. 玩转EXCEL系列-选择性粘贴几个实用技巧
  16. linux 合并视频文件,Linux下转换视频格式与合并视频
  17. el-talbe如何在打印的时候,每页都能有表头?
  18. 回车符号和换行符号的区别
  19. 第四课:点亮LED灯
  20. pytorch 预测手写体数字_深度学习之PyTorch实战(3)——实战手写数字识别

热门文章

  1. 汽车金融的上半年:易鑫巨亏超10亿 灿谷逾期率同比大幅飙升
  2. TITAN Haptics推出捆绑了Immersion许可的下一代触觉马达
  3. 计蒜客 幼儿园买玩具
  4. iOS 9,为前端世界都带来了些什么?「译」
  5. 人工智能常用评估指标
  6. Mac下面visio的替代品Omnigraffle,很好用
  7. 配置微型计算机实验报告,微型计算机原理实验报告.docx
  8. hu丫丫收集到的web测试方法总结
  9. 欧特克Autodesk发布基础设施2012系列产品
  10. IA-32寄存器基本介绍