SpringBoot-使用分页插件(PageHelper)
前言
分页插件的必要性
互联网应用中,分页可谓无处不在,在每个需要展示数据的地方,都能找到分页的影子。在日常开发中,为了追求效率,通常使用数据库的物理分页。这时,对于一个业务逻辑SQL,大多数情况需要输出两段SQL来达到分页效果:count查询总数和limit分页,这无疑增加了大量的工作量。对于这种大量的、相似的、非业务逻辑的代码,抽象出公共插件是势在必行的。
分页插件原理
Mybatis给开发者提供了一个拦截器接口,只要实现了该接口,就可以在Mybatis执行SQL前,作一些自定义的操作。分页插件就是在此基础上开发出来的,对于一个需要分页的SQL,插件会拦截并生成两段SQL。举一个简单的例子:
原SQL:
select * from table where a = '1'
拦截后的查询总数SQL:
select count(*) from table where a = '1'
拦截后的分页SQL:
select * from table where a = '1' limit 5,10
这样我们只需要根据业务逻辑开发原SQL,不需关心分页语法对原SQL的影响,拦截器已经为我们处理好了。
pom.xml文件
添加mybatis、pagehelper、mysql和web依赖。
<properties><java.version>1.8</java.version><mybatis.version>2.1.0</mybatis.version><mybatis.pagehelper.version>1.2.5</mybatis.pagehelper.version></properties><dependencies><!--web--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--mybatis--><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>${mybatis.version}</version></dependency><!-- pagehelper --><dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper-spring-boot-starter</artifactId><version>${mybatis.pagehelper.version}</version></dependency><!--mysql--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>runtime</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><scope>runtime</scope><optional>true</optional></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies>
配置文件
配置数据库信息和分页参数。
spring:datasource:driver-class-name: com.mysql.jdbc.Driverusername: rootpassword: 123456url: jdbc:mysql://localhost:3306/test?serverTimezone=GMT
pagehelper:#配置数据库类型helperDialect: mysql#3.3.0版本可用 - 分页参数合理化,默认false禁用#启用合理化时,如果pageNum<1 会查询第一页,如果pageNum>pages会查询最后一页#禁用合理化时,如果pageNum<1 或pageNum>pages会返回空数据reasonable: true#是否支持接口参数来传递分页参数,默认falsesupportMethodsArguments: true#3.5.0版本可用 - 为了支持startPage(Object params)方法#增加了一个`params`参数来配置参数映射,用于从Map或ServletRequest中取值#可以配置pageNum,pageSize,count,pageSizeZero,reasonable,不配置映射的用默认值params: count=countSql
实体类
@Alias("user")
public class User {private Long id;private String name;private Integer age;private String email;public Long getId() {return id;}public void setId(Long id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}public String getEmail() {return email;}public void setEmail(String email) {this.email = email;}
}
mapper类
使用注解方式。
@Mapper
public interface UserMapper {@Select("select * from user")Page<User> getUserList();
}
controller类
@RestController
public class UserController {@Autowiredprivate UserMapper userMapper;// http://localhost:8080/getUserList?pageNum=1&pageSize=2@RequestMapping("getUserList")public Page<User> getUserList(Integer pageNum, Integer pageSize) {PageHelper.startPage(pageNum, pageSize);Page<User> userList = userMapper.getUserList();return userList;}
}
测试
SpringBoot-使用分页插件(PageHelper)相关推荐
- springboot整合分页插件PageHelper
一. 概述 后端开发80%都是查询操作, 而查询经常涉及到数据分页, 分页工具有很多, 本文介绍的是分页插件PageHelper, 工程基于springboot 参考文章: springBoot my ...
- SpringBoot之分页插件PageHelper的使用
在springboot中使用PageHelper插件有两种较为相似的方式,接下来我就将这两种方式进行总结. 方式一:使用原生的PageHelper 1.在pom.xml中引入依赖 <depend ...
- 解决SpringBoot集成分页插件pagehelper出现的循环依赖问题
版权声明 本文原创作者:谷哥的小弟 作者博客地址:http://blog.csdn.net/lfdfhl 问题描述 SpringBoot2.6.7中集成分页插件com.github.pagehelpe ...
- springboot+mybatis分页插件pageHelper的配置与使用
1.在pom文件里面加入pageHelper分页jar包依赖: <dependency><groupId>com.github.pagehelper</groupId&g ...
- springboot中分页插件pageHelper的使用
优点:无需你自己去封装以及关心sql分页等问题,使用很方便,前端取数据也很方便. 1.包的依赖 <!--pagehelper --><dependency><groupI ...
- SpringBoot集成MyBatis的分页插件PageHelper
[写在前面] 项目的后台管理系统需要展示所有资源信息,select * 虽然方便但数据量过于庞大会严重降低查找效率,页面加载慢,用户体验差.分页自然是必要选择,但原生的方法过于繁杂.MyBatis的分 ...
- Springboot集成mybatis通用Mapper与分页插件PageHelper
Springboot集成mybatis通用Mapper与分页插件PageHelper 插件介绍 通用 Mapper 是一个可以实现任意 MyBatis 通用方法的框架,项目提供了常规的增删改查操作以及 ...
- SpringBoot集成MyBatis的分页插件PageHelper(回头草)
俗话说:好?不吃回头草,但是在这里我建议不管你是好马还是不好马,都来吃吃,带你复习一下分页插件PageHelper. 昨天给各位总结了本人学习springboot整合mybatis第一阶段的一些学习心 ...
- springboot进阶,分页插件 pageHelper,Swagger整合,日志
文章目录 1,课程回顾 2,本章重点 3,具体内容 3.1 整合连接池 3.2 springboot日志配置: 3.3 springboot整合shiro 3.4 mybatis分页插件 pageHe ...
- hql分页获取数据总数_最简洁的分页插件PageHelper
最简洁的分页插件PageHelper 简介 大部分后台管理项目,用的最多的展现方式是列表显示,所以我把列表查询中的分页插件拿出来写一下,方便以后写代码的时候直接复制粘贴.在我们最熟悉的springbo ...
最新文章
- 有没有适合部署在局域网的团队协作平台?
- linux的磁盘文件系统格式怎么看,linux如何下查看磁盘分区的文件系统格式?
- JavaScript Office文档在线编辑备忘
- 短信验证码“最佳实践”
- 现代软件工程系列 结对编程 两周写好3D 陆战棋
- Java编写一个WebService并在Tomcat上发布
- elementui的tree组件页面显示不出数据_只要10分钟,教你配置出炫酷的数据可视化大屏...
- Spring Batch 批量处理策略
- Spring ---- ssm整合
- opencv学习笔记05
- 在Python中手动引发(抛出)异常
- xml 标签带有号php,php操作xml入门之xml基本介绍及xml标签元素
- 发送邮件 空格 java_java实现邮件发送功能
- js中函数的this指向
- HTML视频自动播放
- 10.SpringBoot学习(十)——JDBC之 Spring Boot Jpa
- top与with ties用法
- python图片格式转换:将.png格式转换为.jpg
- 红外焦平面阵列调试传递函数测试方法
- Qt小项目(二):调色器
热门文章
- 邓白氏编码申请最后提交资料格式
- 955.WLB 不加班公司名单!再新增 5 家公司!
- WebGoat使用指南
- golang报错: WaitGroup is reused before previous Wait has returned
- Electron主进程和渲染进程之间通信
- ideaIU_13.1.3安装图解。
- 2023年Java面试题大全(最新版版)面试题附答案详解,看完BTA可进
- 父类(指针、引用)指向子类对象
- 七.全文检索ElasticSearch经典入门-聚合查询
- 关于华擎J3455安装虚拟机PVE和ESXI还有作为纯物理黑群晖的一些事宜