SpringBoot整合Mybatis关于分页查询的方法
最近公司在用到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关于分页查询的方法的更多相关文章
- spring-boot 集合mybatis 的分页查询
spring-boot 集合mybatis 的github分页查询 一.依赖包 <!-- mysql 数据库驱动. --> <dependency> <groupId&g ...
- Springboot整合Mybatis 之分页插件使用
1: 引入jar包 <!-- 引入MyBatis分页插件--> <dependency> <groupId>com.github.pagehelper</gr ...
- SpringBoot 整合 Elasticsearch深度分页查询
es 查询共有4种查询类型 QUERY_AND_FETCH: 主节点将查询请求分发到所有的分片中,各个分片按照自己的查询规则即词频文档频率进行打分排序,然后将结果返回给主节点,主节点对所有数据进行汇总 ...
- SpringBoot整合MyBatis完成用户查询
接上面工程代码,可以参考:https://www.cnblogs.com/braveym/p/11349409.html 1 .在 mapper 接口中以及映射配置文件中添加相关代码 修改UserMa ...
- SpringBoot整合MyBatis的分页插件PageHelper
1.导入依赖(maven) <dependency> <groupId>com.github.pagehelper</groupId> <artifactId ...
- SpringBoot整合mybatis使用pageHelper插件进行分页操作
SpringBoot整合mybatis分页操作 SpringBoot整合Mybatis进行分页操作,这里需要使用Mybatis的分页插件:pageHelper, 关于pageHelper的介绍,请查看 ...
- SpringBoot整合Mybatis之项目结构、数据源
已经有好些日子没有总结了,不是变懒了,而是我一直在奋力学习springboot的路上,现在也算是完成了第一阶段的学习,今天给各位总结总结. 之前在网上找过不少关于springboot的教程,都是一些比 ...
- SpringBoot整合Mybatis之进门篇
已经有好些日子没有总结了,不是变懒了,而是我一直在奋力学习springboot的路上,现在也算是完成了第一阶段的学习,今天给各位总结总结. 之前在网上找过不少关于springboot的教程,都是一些比 ...
- springboot整合mybatis时无法读取xml文件解决方法(必读)
转 http://baijiahao.baidu.com/s?id=1588136004120071836&wfr=spider&for=pc 在springboot整合myba ...
随机推荐
- 使用LuceneUtil工具类,完成CURD操作
package loaderman.curd; import java.util.ArrayList; import java.util.List; import loaderman.entity.A ...
- 微信小程序:undefined Expecting 'STRING', got INVALID
出现问题: 问题原因:app.json中不能出现注释
- Servlet 异常处理( 配置错误页面)
当一个 Servlet 抛出一个异常时,Web 容器在使用了 exception-type 元素的 web.xml 中搜索与抛出异常类型相匹配的配置. 您必须在 web.xml 中使用 error-p ...
- 从源码学习使用 node-delegates
node-delegates 是 TJ 大神所写的一个简单的小工具,源码只有 157 行,作用在于将外部对象接受到的操作委托到内部属性进行处理,也可以理解为讲对象的内部属性暴露到外部,简化我们所需要书 ...
- 从源码看 Vue 中的 Mixin
最近在做项目的时候碰到了一个奇怪的问题,通过 Vue.mixin 方法注入到 Vue 实例的一个方法不起作用了,后来经过仔细排查发现这个实例自己实现了一个同名方法,导致了 Vue.mixin 注入方法 ...
- salt收集windows服务器日志时间
定义收集时间区间: time.ps1 $a = get-date $b = $a.adddays(-) $c = $b.tostring('yyyy-MM-dd') $d = get-date -fo ...
- kettle在linux安装
1 首先保证linux上面已经安装jdk,因为kettle是用Java开发,依赖于jdk 2 将pdi-ce-7.1.0.0-12.zip 上传到linux对应文件夹下面(笔者上传到/opt/kett ...
- EM算法:入门案例
概率分布 4种实验结果 \(E_1\) \(E_2\) \(E_3\) \(E_4\) 记录它们发生的次数 \(y_1\) \(y_2\) \(y_3\) \(y_4\) 记录次数结果 125 18 ...
- vue/cli 3.0配置NODE_ENV
原文地址 在项目开发中我们需要配置环境变量,开发环境,生产环境和测试环境.在cli 2.0的版本中我们是通过在config文件夹进行配置的,vue/cli 3.0相对简单,只需要在项目根目录创建.en ...
- 【计算机视觉】OpenCV之GPU与OpenCL的相关内容说明
1 扩展库简介OpenCV(Open Source Computer Vision Library)是一个致力于实时处理计算机视觉问题的开源库.它最初由Intel公司开发,以GPL许可协议发布,后来由 ...