最近公司在用到SpringBoot整合Mybatis时当web端页面数据增多时需要使用分页查询以方便来展示数据。本人对分页查询进行了一些步骤的总结,希望能够帮助到有需要的博友。如有更好的方式,也希望评论留言,本人以作更好的改进。

SpringBoot+Mybatis+PageHelper实现分页

以下介绍实战中数据库框架使用的是mybatis,对整合mybatis此处不做介绍。

使用pageHelper实现分页查询其实非常简单,共三步:

一、导入依赖;

推荐博友可以上maven中央仓库去找合适的版本进行PageHelper的依赖导入

maven中央仓库地址:https://mvnrepository.com

进入maven中央仓库后在搜索框搜索PageHelper,选择合适的版本

pagehelper支持多种数据库:Oracle,MySql,MariaDB,SQLite,DB2,PostgreSQL,SqlServer 等

在这里我们选择pageHelper-spring-boot-starter

,点击进入后根据项目需要选择版本,在这里我选择1.2.12的最新版本

复制maven依赖,添加至项目的pom.xml中

至此,PageHelper插件就引入完成。

二、添加配置;

aplication.yml或aplication.xml中添加配置:

配置项说明:

1.helperDialect:指定数据库
2.reasonable:默认是false。启用合理化时,如果pageNum<1会查询第一页,如果pageNum>pages(最大页数)会查询最后一页。
禁用合理化时,如果pageNum<1或pageNum>pages会返回空数据
3.supportMethodsArguments:是否支持接口参数来传递分页参数,默认false
4.params:为了支持startPage(Object params)方法,增加了该参数来配置参数映射,用于从对象中根据属性名取值,
可以配置 pageNum,pageSize,count,pageSizeZero,reasonable,不配置映射的用默认值,
默认值为pageNum=pageNum;pageSize=pageSize;count=countSql;reasonable=reasonable;pageSizeZero=pageSizeZero
其余参数详情请看官方文档:https://pagehelper.github.io/docs/howtouse
除此之外介绍另外一种方法:

编写分页bean类,注意:这个类一定要放在springboot启动类所在位置的平级或子级的包中,保证能springboot扫描到

import java.util.Properties;

import org.apache.ibatis.plugin.Interceptor;

import org.mybatis.spring.SqlSessionFactoryBean;

import org.springframework.context.annotation.Bean;

import org.springframework.context.annotation.Configuration;

import com.github.pagehelper.PageHelper;

@Configuration

public class PageHelperBean {

@Bean

PageHelper pageHelper(){

//分页插件

PageHelper pageHelper = new PageHelper();

Properties properties = new Properties();

properties.setProperty("reasonable", "true");

properties.setProperty("supportMethodsArguments", "true");

properties.setProperty("returnPageInfo", "check");

properties.setProperty("params", "count=countSql");

pageHelper.setProperties(properties);

//添加插件

new SqlSessionFactoryBean().setPlugins(new Interceptor[]{pageHelper});

return pageHelper;

}

}

本人使用第一种方式(推荐使用)

三、在程序代码中使用分页查询;

<1>.接口层(Mapper层)代码展示:

<2.>业务层(service层)代码展示:

注:使用PageHelper.startPage()方法设置分页:pageCount:当前页数  pageSize:每页显示的总记录数

<3.>控制器层(controller层)代码展示:

使用postman工作对方法进行测试:

get请求,输入参数后进行测试

测试结果如下:

当传入参数pageCount=1,pageSize=3时,total记录为4,进行了分页操作,第一个记录了三条数据,共两页

总结: 使用pagehelper插件后写sql时不需要再在mapper.xml文件中写分页,简化了代码,提高开发效率

SpringBoot整合Mybatis关于分页查询的方法的更多相关文章

  1. spring-boot 集合mybatis 的分页查询

    spring-boot 集合mybatis 的github分页查询 一.依赖包 <!-- mysql 数据库驱动. --> <dependency> <groupId&g ...

  2. Springboot整合Mybatis 之分页插件使用

    1: 引入jar包 <!-- 引入MyBatis分页插件--> <dependency> <groupId>com.github.pagehelper</gr ...

  3. SpringBoot 整合 Elasticsearch深度分页查询

    es 查询共有4种查询类型 QUERY_AND_FETCH: 主节点将查询请求分发到所有的分片中,各个分片按照自己的查询规则即词频文档频率进行打分排序,然后将结果返回给主节点,主节点对所有数据进行汇总 ...

  4. SpringBoot整合MyBatis完成用户查询

    接上面工程代码,可以参考:https://www.cnblogs.com/braveym/p/11349409.html 1 .在 mapper 接口中以及映射配置文件中添加相关代码 修改UserMa ...

  5. SpringBoot整合MyBatis的分页插件PageHelper

    1.导入依赖(maven) <dependency> <groupId>com.github.pagehelper</groupId> <artifactId ...

  6. SpringBoot整合mybatis使用pageHelper插件进行分页操作

    SpringBoot整合mybatis分页操作 SpringBoot整合Mybatis进行分页操作,这里需要使用Mybatis的分页插件:pageHelper, 关于pageHelper的介绍,请查看 ...

  7. SpringBoot整合Mybatis之项目结构、数据源

    已经有好些日子没有总结了,不是变懒了,而是我一直在奋力学习springboot的路上,现在也算是完成了第一阶段的学习,今天给各位总结总结. 之前在网上找过不少关于springboot的教程,都是一些比 ...

  8. SpringBoot整合Mybatis之进门篇

    已经有好些日子没有总结了,不是变懒了,而是我一直在奋力学习springboot的路上,现在也算是完成了第一阶段的学习,今天给各位总结总结. 之前在网上找过不少关于springboot的教程,都是一些比 ...

  9. springboot整合mybatis时无法读取xml文件解决方法(必读)

    转    http://baijiahao.baidu.com/s?id=1588136004120071836&wfr=spider&for=pc 在springboot整合myba ...

随机推荐

  1. Flutter移动电商实战 --(8)dio基础_伪造请求头获取数据

    在很多时候,后端为了安全都会有一些请求头的限制,只有请求头对了,才能正确返回数据.这虽然限制了一些人恶意请求数据,但是对于我们聪明的程序员来说,就是形同虚设.这篇文章就以极客时间 为例,讲一下通过伪造 ...

  2. linux系统及命令学习

    1,基本概念 Shell(命令行):是一个程序,接受键盘输入的命令,并将命令传递给操作系统进行执行. Bash:Bourne Again Shell, 是大多数linux系统分之中所带的一种shell ...

  3. 提高组刷题营 DAY 1 下午

    DFS 深度优先搜索 通过搜索得到一棵树形图 策略:只要能发现没走过的点,就走到它.有多个点可走就随便挑一个,如果无路可走就回退,再看有没有没走过的点可走. 在图上寻找路径[少数可用最短路解决]:最短 ...

  4. leetcode84 柱状图

    O(n^2) time 应用heights[r]<=heights[r+1]剪枝: class Solution { public: int largestRectangleArea(vecto ...

  5. selenium 学习中遇到的问题汇总

    1.使用document.getByClassName时无click事件,然后就不知道怎么办了,也不太懂前端,与开发大哥确认,div 中class实现展开和收起是通过隐藏和显示这种方式实现的,在编写时 ...

  6. Hibernate3核心API-Session接口

    Session是应用程序与数据库之间交互操作的一个单线程对象,是 Hibernate 运作的中心,所有持久化对象必须在 session 的管理下才可以进行持久化操作.此对象的生命周期很短.Sessio ...

  7. Linux Shell 自动备份脚本

    写一个使用shell脚本增量备份系统文件,顺便复习一下shell脚本相关的命令,这个脚本可以根据自己的需求来备份不同的文件或者文件夹,进行完整备份和增量备份. 参考的网址:http://blog.51 ...

  8. Threadlocal源码分析以及其中WeakReference作用分析

    今天在看Spring 3.x企业应用开发实战,第九章 Spring的事务管理,9.2.2节ThreadLocal的接口方法时,书上有提到Threadlocal的简单实现,我就去看了下JDK1.8的Th ...

  9. 数学建模python matlab 编程(指派问题)

    指派授课问题 现有A.B.C.D四门课程,需由甲.乙.丙.丁四人讲授,并且规定: 每人只讲且必须讲1门课:每门课必须且只需1人讲. 四人分别讲每门课的费用示于表中: 课 费用 人 A B C D 甲 ...

  10. Python3 Selenium自动化web测试 ==> 第二节 页面元素的定位方法 -- iframe专题 <下>

    学习目的: 掌握iframe矿建的定位,因为前端的iframe框架页面元素信息,大多时候都会带有动态ID,无法重复定位. 场景: 1. iframe切换 查看iframe 切换iframe 多个ifr ...