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 ...
随机推荐
- java日期大小比较
之前有面试到两个日期的大小比较方式,现在整理一下几种方法. 例子: String beginTime=new String("2017-06-09 10:22:22"); S ...
- C# Read/Write another Process' Memory
https://codingvision.net/security/c-read-write-another-process-memory Today’s tutorial is about…proc ...
- LC 740. Delete and Earn
Given an array nums of integers, you can perform operations on the array. In each operation, you pic ...
- Django之通用视图
01-介绍 通用视图把视图开发中常用的写法和模式抽象出来,让你编写少量代码就能快速实现常见的数据视图.显示对象列表就是这样一种任务. Django 自带的通用视图能实现下述功能: 1.列出对象并显示单 ...
- Elasticsearch技术解析与实战--shard&replica机制
序言 1.shard&replica机制 (1)index包含多个shard (2)每个shard都是一个最小工作单元,承载部分数据,lucene实例,完整的建立索引和处理请求的能力 (3)增 ...
- Django Model模型
Model简介 模型准确且唯一的描述了数据.它包含您储存的数据的重要字段和行为.一般来说,每一个模型都映射一张数据库表. 每个模型都是一个 Python 的类,这些类继承 django.db.mode ...
- GBK格式字符串右补空格
public class Test2 { public static void main(String[] s) throws IOException { List<User> l ...
- 安卓控件支持HTML标签
http://www.cnblogs.com/xqxacm/p/5092557.html
- 编译安装了的nginx 添加http_ssl_module模块
1.看下编译安装nginx的时候,都编译安装的哪些模块. [root@zabbix ~]# /usr/local/nginx/sbin/nginx -V nginx version: nginx/1. ...
- 为lumen添加session支持
为lumen添加session支持,同时配置全局函数csrf_token可用 首先laravel和lumen框架的版本要一致,我这里版本都是5.4 1.复制laravel框架config目录下的ses ...