【SpringBoot应用篇】SpringBoot集成MybatisPlus+PageHelper分页

2023-05-16

【SpringBoot应用篇】SpringBoot集成MybatisPlus+PageHelper分页

  • 简介
  • SpringBoot集成PageHelper插件
    • pom
    • yml配置
    • StockMapper
    • 启动类
    • 测试类

简介

在项目中我们执行一个分页查询时,很多时候还会需要知道该查询的其他信息,如总数、每页数量、当前页数、上一页或下一页等等,这些信息如果每次都自己写的话就太麻烦了,而pagehelper能够帮助我们更方便地获取这些信息,大大方便了我们的开发效率。

pagehelper是mybatis的一个插件,其作用是更加方便地进行分页查询

SpringBoot集成PageHelper插件

框架版本
spring-boot2.2.2.RELEASE
mybatis-plus3.5.2
pagehelper1.3.0

pom

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.2.2.RELEASE</version>
    <relativePath/>
</parent>
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-jdbc</artifactId>
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
    </dependency>

    <dependency>
        <groupId>com.baomidou</groupId>
        <artifactId>mybatis-plus-boot-starter</artifactId>
        <version>3.5.2</version>
    </dependency>
    <dependency>
        <groupId>com.github.pagehelper</groupId>
        <artifactId>pagehelper-spring-boot-starter</artifactId>
        <version>1.3.0</version>
    </dependency>
</dependencies>

yml配置

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    username: root
    password: root
    url: jdbc:mysql://localhost:3306/test_mybaitsplus?useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC
    
#pagehelper分页插件配置
pagehelper:
  helper-dialect: mysql  #设置数据库类型
  reasonable: true  #开启合理化:页码<=0 查询第一页,页码>=总页数查询最后一页
  support-methods-arguments: true  #支持通过 Mapper 接口参数来传递分页参数
  params: count=countsql
  • helper-dialect:指定数据库,不指定的话会默认自动检测数据库类型
  • reasonable:是否启用分页合理化。如果启用,当pagenum<1时,会自动查询第一页的数据,当pagenum>pages时,自动查询最后一页数据;不启用的,以上两种情况都会返回空数据
  • support-methods-arguments:默认值false,分页插件会从查询方法的参数值中,自动根据上面 params 配置的字段中取值,查找到合适的值时就会自动分页。
  • params:用于从对象中根据属性名取值, 可以配置 pageNum,pageSize,count,pageSizeZero,reasonable,不配置映射的用默认值, 默认值为pageNum=pageNum;pageSize=pageSize;count=countSql;reasonable=reasonable;pageSizeZero=pageSizeZero

StockMapper

这里使用Mybatis-Plus所以继承了通用的BaseMapper类

public interface StockMapper extends BaseMapper<Stock> {
    @Select(" select * from stock")
    List<Stock>  selectAll();
}

启动类

@MapperScan(basePackages = {"cn.zysheep.biz.mapper"})
@SpringBootApplication
public class FfsApplication {
    public static void main(String[] args) {
        SpringApplication.run(FfsApplication.class, args);
    }
}

测试类

@SpringBootTest(classes = FfsApplication.class)
@Slf4j
public class StockMapperTest {
    @Resource
    private StockMapper stockMapper;
    
	@Test
	public void selectAll() {
	    PageHelper.startPage(1,20);
	    List<Stock> stocks = stockMapper.selectAll();
	    PageInfo<Stock> stockPageInfo = new PageInfo<>(stocks);
	    log.info("当前页: {}",stockPageInfo.getPageNum());
	    log.info("每页的数量: {}",stockPageInfo.getPageSize());
	    log.info("当前页的数量: {}",stockPageInfo.getSize());
	    log.info("总记录数:{}",stockPageInfo.getTotal());
	    log.info("总页数:{}",stockPageInfo.getPages());
	    log.info("结果集: {}",stockPageInfo.getList());
	}
}

在这里插入图片描述

注意:
1、只有紧跟着PageHelper.startPage(pageNum,pageSize)的查询sql语句才被pagehelper起作用
2、PageInfo<Stock> stockPageInfo = new PageInfo<>(stocks);传入的对象必须是分页查询后的对象。即紧跟PageHelper.startPage(pageNum,pageSize)的查询语句返回的集合对象。中间做数据转换可能导致数据不对

结论: 这三句要按顺序连在一起,分页数据对象PageInfo才会生效且正确。

PageHelper.startPage(1,20);
List<Stock> stocks = stockMapper.selectAll();
PageInfo<Stock> stockPageInfo = new PageInfo<>(stocks);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【SpringBoot应用篇】SpringBoot集成MybatisPlus+PageHelper分页 的相关文章

  • wsl ubuntu22.04 conda环境安装labelImg解决xcb缺失问题

    labelImg 安装 pip install PyQt5 i https pypi tuna tsinghua edu cn simple pip install pyqt5 tools i https pypi tuna tsinghu
  • 7个大一C语言必学的程序 / C语言经典代码大全

    嗨 大家好 xff0c 这里是可莉 xff01 今天给大家带来的是7个C语言的经典基础代码 那一起往下看下去把 程序一 打印100到200之间的素数 include lt stdio h gt int main int i for i 61
  • 字符串转化为枚举类型

    需求 xff1a 通过配置文件中自定义传入枚举类型的值 span class token annotation punctuation 64 value span span class token punctuation span span
  • NAT和PAT的原理及配置

    文章目录 一 NAT1 NAT概述2 私有地址3 NAT工作原理4 NAT功能5 NAT包含4类地址6 NAT的实现方式 二 静态转换 xff08 Static Translation xff09 三 动态转换 xff08 Dynamic
  • Linux系统安装教程(手把手教学)

    文章目录 1 首先 xff0c 打开虚拟机 xff0c 点击新建虚拟机2 点击下一步 xff0c 再点击稍后安装3 操作系统选择Linux xff0c 版本选择CentOS7 64位4 命名虚拟机5 设置磁盘大小为100GB6 设置内存为4
  • NFS共享存储服务

    文章目录 引言一 NFS概述二 安装 nfs utils rpcbind 软件包三 NFS的特点四 实验步骤1 安装nfs和rpcbind软件2 设置共享目录3 启动 NFS服务并验证结果4 客户机中访问 NFS 共享资源4 1 手动挂载
  • 优化命令之Sar命令

    文章目录 引言一 sar简介1 sar命令常用格式2 常用选项3 常用参数 二 Sar常用性能数据三 CPU资源监控1 整体CPU使用统计 xff08 u xff09 2 各个CPU使用统计 P 3 将CPU使用情况保存到文件中 四 内存监
  • MySQL高级SQL语句

    文章目录 引言一 常用查询1 order by按关键字排序1 1 升序排序1 2 降序排序1 3 结合where进行条件过滤再排序1 4 多字段排序 2 and or判断2 1 and or 且与或的使用2 2 嵌套 多条件使用 3 dis
  • MongoDB搭建及基础操作

    文章目录 引言一 MongoDB概述1 什么是MongoDB2 MongoDB的特点3 MongoDB适用场景4 MongoDB概念解析 二 搭建MongoDB1 关闭系统防火墙和安全机制2 配置mongodb源仓库3 安装mongodb4
  • 【云原生之k8s】k8s之持久化存储PV、PVC

    文章目录 一 PV和PVC1 PV 概念2 PVC概念3 PV 与 PVC 之间的关系3 1 PV和PVC的生命周期3 2 一个PV从创建到销毁的具体流程3 3 三种回收策略3 4 查看pv pvc的定义方式 规格 4 两种PV的提供方式
  • react native 这样理解运行机制

    移动开发中 xff0c native开发性能和效果上无疑是最好的 但是在众多的情况下 xff0c native开发并不是最优的选择 当需求经常改动的时候 xff0c 当预算有限的时候 xff0c 当deadline很近的时候 xff0c n
  • Promethues原理详解

    目录 引言 一 Prometheus 概述 1 什么是Prometheus 2 Zabbix和Prometheus区别 3 Prometheus的特点 二 运维监控平台设计思路 三 Prometheus监控体系 1 系统层监控 xff08
  • Prometheus部署、操作及Grafana展示

    目录 一 部署Prometheus xff08 192 168 109 18 xff09 1 环境准备工作 2 普罗米修斯的部署 2 1 上传 prometheus 2 37 0 linux amd64 tar gz 到 opt 目录中 x
  • 云原生--kubectl命令汇总

    目录 1 kubectl自动补全 2 kubectl上下文和配置 3 创建对象 4 显示和查找资源 5 更新资源 6 修补资源 7 编辑资源 8 scale资源 9 删除资源 10 与运行中的pod交互 11 与节点和集群交互 12 资源类
  • 计蒜客 - T1096 - 石头剪刀布

    计蒜客 T1096 石头剪刀布 题目 石头剪刀布是常见的猜拳游戏 石头胜剪刀 xff0c 剪刀胜布 xff0c 布胜石头 如果两个人出拳一样 xff0c 则不分胜负 一天 xff0c 小 A 和小B正好在玩石头剪刀布 已知他们的出拳都是有周
  • Docker保姆级教程:用Dockerfile文件构建专属于你的镜像

    初学者想要详细的了解docker可以去Docker菜鸟教程仔细学习 xff0c 本文只展示使用docker部署代码的全部过程 操作系统是ubuntu xff1a 18 04 xff08 tip xff1a 一定要了解docker是什么 xf
  • Windows安装tar.gz格式文件的方法

    首先下载tar gz文件 xff0c 比如我准备安装python docx的库文件 xff1a python docx 0 8 6 tar gz xff0c 下载后是一个tar gz文件 xff0c 解压软件解压 xff0c 解压后的目录里
  • SQL单表查询语句及其示例

    主要包括模糊查询 排序 别名查询 条件查询 逻辑运算and or in 分页显示 单表查询 新建表 xff08 商品分类表 xff09 商品ID 商品分类名称 商品描述 1 香烟酒水 二锅头 xff0c 女儿红 2 皮鞋箱包 江南皮革厂打造
  • WIN10安装sedatools,出现蓝屏代码为PAGE_FAULT_IN_NONPAGED_AREA,提示重启原因是因为hardlock.sys。

    安装sedatools的方法是从b站上搜索 xff08 直接搜索silvaco xff0c up主为向上生长的谛听 xff09 在安装的时候刚开始setup不上 xff0c 然后通过开启windows的安全模式 xff0c 得以安装成功 x
  • 视频超分算法VESPCN:Real-Time Video Super-Resolution with Spatio-Temporal Networks and Motion Compensation

    这篇文章基于ESPCN提出了针对视频重建任务的网络结构VESPCN ESPCN在图像和视频重建任务上都相比先前的方法都有一定的提升 xff0c 但ESPCN只能对单帧图像进行重建 xff0c 并不能利用视频多帧图像的时间相关性信息 该模型由

随机推荐