之前讲了Springboot整合Mybatis,然后介绍了如何自动生成pojo实体类、mapper类和对应的mapper.xml 文件,并实现最基本的增删改查功能。接下来要说一说Mybatis 的分页功能:使用Mybatis-PageHelper插件,实现分页功能。Spring Boot入门系列文章:https://www.cnblogs.com/zhangweizhong/category/1657780.html

一、pagehelper介绍

pageHelper是一款非常简单、易用的分页插件,它能很好的集成在spring boot中。它是一个基于mybatis的一款插件,所以我们在使用它时,我们需要使用mybatis作为持久层框架。

github地址是https://github.com/pagehelper/Mybatis-PageHelper

二、快速开始

如果我们需要使用pageHelper的话,我们需要在spring boot项目中引入pageHelper的依赖。之前介绍过Spring Boot整合mybatis,这里就不介绍了。《Spring Boot入门系列(六)Spring Boot如何使用Mybatis XML 配置版【附详细步骤】》 。

1、pom 配置

增加pageHelper的依赖

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

注意:spring boot 引入的jar包必须是要pagehelper-spring-boot-starter ,如果单独引入pagehelper的话,会提示错误。

2、application.properties增加pagehelper 配置

# 分页框架
pagehelper.helperDialect=mysql
pagehelper.reasonable=true
pagehelper.supportMethodsArguments=true
pagehelper.params=count=countSql

说明:

  helperDialect : 指定数据库,可以不配置,pagehelper插件会自动检测数据库的类型。

  resonable : 分页合理化参数默认false,当该参数设置为true 时,pageNum <= 0 时,默认显示第一页,pageNum 超过 pageSize 时,显示最后一页。

  params : 用于从对象中根据属性名取值,可以配置pageNum,pageSize,count 不用配置映射的默认值。

  supportMethodsArguments : 分页插件会根据查询方法的参数中,自动根据params 配置的字段中取值,找到合适的值会自动分页。 

到这里配置就完成了,在Springboot中整合就是这么简洁,约定大约配置的方式,大量的减少了配置文件的使用 。

3、实现分页

在原来的UserService类和UserServiceImpl 类中,增加 queryUserListPaged 接口和对应的方法实现。

    @Override
public List<SysUser> queryUserListPaged(SysUser user, Integer page, Integer pageSize) {
// 开始分页
PageHelper.startPage(page,pageSize);
Example example = new Example(SysUser.class);
Example.Criteria criteria = example.createCriteria(); if (!StringUtils.isEmptyOrWhitespace(user.getUsername())) {
criteria.andLike("username", "%" + user.getUsername() + "%");
} if (!StringUtils.isEmptyOrWhitespace(user.getNickname())) {
criteria.andLike("nickname", "%" + user.getNickname() + "%");
} List<SysUser> userList = userMapper.selectByExample(example); return userList;
}

分页的核心就一行代码, PageHelper.startPage(page,pageSize); 这个就标识开始分页。加了这个之后pagehelper 插件就会通过其内部的拦截器,将执行的sql语句,转化为分页的sql语句。

注意:使用时PageHelper.startPage(pageNum, pageSize)一定要放在列表查询的方法中,这样在查询时会查出相应的数据量且会查询出总数。

4、在原来的MybatisController 控制器中增加如下方法:

@RequestMapping("/queryUserListPaged")
public JSONResult queryUserListPaged(Integer page) {
if (page == null) {
page = 1;
} int pageSize = 10; SysUser user = new SysUser(); List<SysUser> userList = userService.queryUserListPaged(user, page, pageSize); return JSONResult.ok(userList);
}

说明:

  调用的方法,只需将page页码,和pageSize 每页多少条这两个字段传入即可。

最后

以上,就把Spring Boot集成pagehelper插件,实现分页功能介绍完了。还是比较简单的。

这个系列课程的完整源码,也会提供给大家。大家关注我的微信公众号(架构师精进),回复:springboot源码。获取这个系列课程的完整源码。

Spring Boot入门系列(十六)使用pagehelper实现分页功能的更多相关文章

  1. Spring Boot入门系列(六)如何整合Mybatis实现增删改查

    前面介绍了Spring Boot 中的整合Thymeleaf前端html框架,同时也介绍了Thymeleaf 的用法.不清楚的朋友可以看看之前的文章:https://www.cnblogs.com/z ...

  2. Spring Boot入门系列(十三)如何实现事务

    前面介绍了Spring Boot 中的整合Mybatis并实现增删改查.不清楚的朋友可以看看之前的文章:https://www.cnblogs.com/zhangweizhong/category/1 ...

  3. Spring Boot入门系列(十七)整合Mybatis,创建自定义mapper 实现多表关联查询!

    之前讲了Springboot整合Mybatis,介绍了如何自动生成pojo实体类.mapper类和对应的mapper.xml 文件,并实现最基本的增删改查功能.mybatis 插件自动生成的mappe ...

  4. Spring Boot入门系列(二十)快速打造Restful API 接口

    spring boot入门系列文章已经写到第二十篇,前面我们讲了spring boot的基础入门的内容,也介绍了spring boot 整合mybatis,整合redis.整合Thymeleaf 模板 ...

  5. Spring Boot 2.X(十六):应用监控之 Spring Boot Actuator 使用及配置

    Actuator 简介 Actuator 是 Spring Boot 提供的对应用系统的自省和监控功能.通过 Actuator,可以使用数据化的指标去度量应用的运行情况,比如查看服务器的磁盘.内存.C ...

  6. Spring Boot入门系列(十四)使用JdbcTemplate操作数据库,配置多数据源!

    前面介绍了Spring Boot 中的整合Mybatis并实现增删改查.如何实现事物控制.不清楚的朋友可以看看之前的文章:https://www.cnblogs.com/zhangweizhong/c ...

  7. Spring Boot 入门(十二):报表导出,对比poi、jxl和esayExcel的效率

    本片博客是紧接着Spring Boot 入门(十一):集成 WebSocket, 实时显示系统日志写的 关于poi.jxl和esayExcel的介绍自行百度. jxl最多支持03版excel,所以单个 ...

  8. Spring Boot 入门(十):集成Redis哨兵模式,实现Mybatis二级缓存

    本片文章续<Spring Boot 入门(九):集成Quartz定时任务>.本文主要基于redis实现了mybatis二级缓存.较redis缓存,mybaits自带缓存存在缺点(自行谷歌) ...

  9. Spring Boot 入门系列(二十三)整合Mybatis,实现多数据源配置!

    d之前介绍了Spring Boot 整合mybatis 使用注解方式配置的方式实现增删改查以及一些复杂自定义的sql 语句 .想必大家对spring boot 项目中,如何使用mybatis 有了一定 ...

随机推荐

  1. 【asp.net core 系列】2 控制器与路由的恩怨情仇

    0. 前言 在上一篇文章中,我们初步介绍了asp.net core,以及如何创建一个mvc项目.从这一篇开始,我将为大家展示asp.net core 的各种内容,并且尝试带领大家来挖掘其中的内在逻辑. ...

  2. Java-接口的本质

    https://mp.weixin.qq.com/s/tEVw0j18rX2hxt-guXQJ-w 大道至简,本质往往是很朴素的. 本质: 类是主体,接口是主体之间交流沟通的规约. 位置:1. 主体站 ...

  3. golang内存逃逸

    golang程序变量会携带油一组校验数据,用来证明它的整个生命周期是否在运行时完全可知.如果变量通过了这些校验,它就可以在栈上分配.否则就说它逃逸了,必须在堆上分配     能引起变量逃逸到堆上的典型 ...

  4. Java实现 蓝桥杯 算法提高 因式分解

    算法提高 8-1因式分解 时间限制:10.0s 内存限制:256.0MB 提交此题 问题描述 设计算法,用户输入合数,程序输出若个素数的乘积.例如,输入6,输出23.输入20,输出22*5. 样例 与 ...

  5. Java实现 蓝桥杯 蓝桥杯VIP 基础练习 数的读法

    问题描述 当输入12 3456 7009时,会给出相应的念法: 十二亿三千四百五十六万七千零九 用汉语拼音表示为 shi er yi san qian si bai wu shi liu wan qi ...

  6. Java实现 LeetCode 278 第一个错误的版本

    278. 第一个错误的版本 你是产品经理,目前正在带领一个团队开发新的产品.不幸的是,你的产品的最新版本没有通过质量检测.由于每个版本都是基于之前的版本开发的,所以错误的版本之后的所有版本都是错的. ...

  7. Java实现 洛谷 P1115 最大子段和

    import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scann ...

  8. RPM包管理-yum在线管理

    常用yum命令 查询 查询所有可用软件包列表,yum list 搜索所有和关键字相关的软件包,yum search 关键字 安装 yum -y install 包名,其中,-y 表示自动回答yes 升 ...

  9. Centos7 搭建KVM并创建Linux Windows虚拟机

    一.安装KVM   查看系统版本 cat /etc/redhat-release     关闭防火墙及selinux   systemctl disable firewalld.service 查看防 ...

  10. css3中的skew(skewX,skewY)用法

    这是html代码 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> < ...