SSMP整合案例(4) Spring Boot整合MyBatis-Plus实现分页查询

news2024/11/11 18:13:09

文章 SSMP整合案例(3) 创建数据层并在测试类中运行数据库增删查改操作我们编写了MyBatis-Plus以Druid为数据源的方式 做了数据库的增删查改操作
那么 下面我们继续写 分页查询
我们 先写这样一段代码

bookDao.selectPage()

selectPage就是BaseMapper提供给我们的分页查询函数 但他需要参数
我们按住Ctrl点进去
在这里插入图片描述
我们可以看到 他的第一个参数 是一个IPage类型的
在这里插入图片描述
我们直接编写测试类代码如下

package com.example.bookconfig;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.example.bookconfig.dao.bookDao;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest
class BookConfigApplicationTests {

    @Autowired
    private bookDao bookDao;

    @Test
    void contextLoads() {
        IPage page = new Page(1,1);
        bookDao.selectPage(page,null);
    }
}

这里 我们通过Page实现类 实现了IPage接口 那么 作为分页 他需要你告诉它 你要查第几页 每页展示多少条
这里 我们告诉它 我们要查第一页 每页一条 第二个参数是查询条件 我们暂时不写 就给个unll

代码运行结果如下
在这里插入图片描述
我们会发现不太对啊
这里 MP做了限制 我们需要写一个专门做配置的类 处理MP的拦截器

我们在启动类同目录 下 创建一个文件夹 config
在这里插入图片描述
下面创建一个 MPConfig java类
参考待明日续爱

package com.example.bookconfig.config;

import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class MPConfig {
    @Bean
    public MybatisPlusInterceptor MybatisPlusInterceptor(){
        MybatisPlusInterceptor MybatisPlusInterceptor = new MybatisPlusInterceptor();
        MybatisPlusInterceptor.addInnerInterceptor(new PaginationInnerInterceptor());
        return MybatisPlusInterceptor;
    }
}

我们先用Configuration声明这个为一个配置类 然后 通过Bean 将他交给Spring去管理
然后 通过addInnerInterceptor 加入配合 开启PaginationInnerInterceptor

然后 我们再次运行测试类 运行结果如下
在这里插入图片描述
这次结果就对了 他是查到第一页 查一条

然后 我们试着将这两改成 第二页
在这里插入图片描述
查第二页 查一条 显然数据没有问题
在这里插入图片描述
这里 因为我的表数据只有两条 所以 目前也只能这样先测试一下了

但是 比较奇葩的是 selectPage 方法的返回值 还是个IPage类型的对象
那么 我们怎么拿到查询返回的结果呢?
首先 我们还是要看 我们带进去的 这个 IPage 对象
用它.get 后面的提示就出来了
首先 getCurrent 代表当前页 指的就是 我们当前传递的这个2
getSize 代表每页展示的数量 就是我们这个传递的第二个参数 1 每页查询一条
getTotal 查询结果的长度 就是 实际查出来了多少条数据 那么 我们这里显然是一条
在这里插入图片描述
然后 我们仔细看看 getRecords 后面对应的类型
在这里插入图片描述
那么 查询出来的数据怎么获取 就不用我教了吧?
我们这样打印出来

IPage page = new Page(2,1);
bookDao.selectPage(page,null);
System.out.println("----page.getRecords()----");
System.out.println(page.getRecords());

运行结果如下
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/675030.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Spring Cloud + RabbitMQ 实现分布式消息总线】—— 每天一点小知识

💧 S p r i n g C l o u d R a b b i t M Q 实现分布式消息总线 \color{#FF1493}{Spring Cloud RabbitMQ 实现分布式消息总线} SpringCloudRabbitMQ实现分布式消息总线💧 🌷 仰望天空,妳我亦是行人.✨ 🦄 …

redis集群原理

redis是单线程,但是一般的作为缓存使用的话,redis足够了,因为它的读写速度太快了。 官方的一个简单测试: 测试完成了50个并发执行100000个请求。 设置和获取的值是一个256字节字符串。 结果:读的速度是110000次/s,写的速度是81000…

基于JAVA的高校心理咨询系统/ 基于web的高校心理咨询系统/心理咨询系统

​ 摘 要 近年来,基于网络的高校心理咨询系统已成为社会的发展趋势,我国对高校心理咨询非常重视, 高校心理咨询工作面临着严峻考验,而网络的普及为高校心理咨询的信息化提供了必要的条件。本文主要研究了如何设计和开发基于B/S 高校心理咨询…

[进阶]反射-认识反射、获取类

反射 反射就是:加载类,并允许以编程的方式解剖类中的各种成分(成员变量、方法、构造器等)。 反射学什么? 学习获取类的信息、操作它们 反射第一步:加载类,获取类的字节码:Class对…

十大基础算法

一、选择排序 过程简单描述: 首先,找到数组中最小的那个元素,其次,将它和数组的第一个元素交换位置(如果第一个元素就是最小元素那么它就和自己交换)。其次,在剩下的元素中找到最小的元素,将它与数组的第二…

翻筋斗觅食策略改进海鸥优化算法

目录 一、非线性参数A策略 二、翻筋斗觅食策略 基本 SOA 有一些局限性,例如容易陷入局部最优值、后期收敛缓慢、勘探与开发能力不平衡等,在求解复杂优化问题时尤甚。为了改善基本SOA的不足,提出一种基于翻筋斗觅食策略的改进 SOA(SFSOA)。…

【Neo4j教程之CQL函数基本使用】

🚀 Neo4j 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,C…

基于stm32单片机的ESP-01S模块(wifi模块)的使用

一、开发环境 开发板:野火stm32f407开发板 wifi模块:ESP-01S(核心处理器 ESP8266 ),固件版本(MQTT固件) 操作系统:rt-thread操作系统 二、ESP-01S模块介绍 ESP-01S 是由安信可科技开…

【已解决】Vue3使用Element-plus按需加载时消息弹框ElMessage没有样式

Vue3使用Element-plus时消息弹框ElMessage没有样式 问题描述 Element-plus在使用ElMessage消息弹框的时候没有样式,按照官方的按需加载的方式引入的 1、Element-plus使用了自动按需导入,vite.config.js配置如下: plugins: [vue(),AutoImpo…

【领域驱动设计专题】一文带领你透视DDD领域驱动模型的本质和设计原理分析指南(通用语言体系)

一文带领你透视DDD领域驱动模型的本质和设计原理分析指南(通用语言体系) 前言介绍降低沟通成本问题:各自建立属于自己领域/层面的语言标准解决方案1:专业术语转换为接地气的话术解决方案2:用简单的案例和背景信息进行描…

【无监督学习】1、MOCOv1 | 用于提升无监督学习效果的动量对比学习

文章目录 一、背景二、方法2.1 对比学习(字典查表)2.2 动量对比函数2.3 Pretext Task 三、效果3.1 数据集3.2 训练细节3.3 实验 论文:Momentum Contrast for Unsupervised Visual Representation Learning 代码:https://github.c…

【Java|多线程与高并发】wait和notify方法详解

文章目录 1.前言2.wait和notify的基本使用3. notifyAll方法4. wait和sleep方法的对比5. 总结 1.前言 在Java多线程环境中,线程之间是抢占式执行的,线程的调度是随机的.这就很难受了. 在很多情况下我们希望线程以我们想要的顺序来执行. 这就需要wait和notify这两个方法 2.wait和…

Java——《面试题——MySQL篇》

前文 java——《面试题——基础篇》 Java——《面试题——JVM篇》 Java——《面试题——多线程&并发篇》 Java——《面试题——Spring篇》 Java——《面试题——SpringBoot篇》 目录 前文 1、数据库的三范式是什么? 2、MySQL数据库引擎有哪些 3、说说…

【五子棋实战】第2章 博弈树负值极大alpha-beta剪枝算法

【五子棋实战】第2章 博弈树极大极小值alpha-beta剪枝算法 博弈树 极大极小值搜索Minimax 负值极大法Negamax alpha-beta剪枝 博弈树负值极大alpha-beta剪枝算法代码实现 ## 初始化输入、确定输出 ## 开始回溯 ## 判赢 ## 评估-计算分数 总结 继续学习下一篇实战&…

注解和异常的详细笔记

注解的理解 注解(Annotation)也被称为元数据(Metadata),用于修饰解释 包、类、方法、属性、构造器、局部变量等数据信息。和注释一样,注解不影响程序逻辑,但注解可以被编译或运行,相当于嵌入在代码中的补充信息。在 JavaSE 中&am…

OpenMMLab-AI实战营第二期——相关1. COCO数据集格式和pycocotools使用(目标检测方向)

文章目录 1. COCO数据集1.1 COCO数据集介绍1.2 COCO数据集格式1.2.1 常见目标检测数据格式1.2.2 COCO数据集文件结构及标注文件说明1.2.3 COCO的evaluation指标 1.3 其他 2. pycocotools2.1 pycocotools简介和安装2.2 基本使用 3. 图像的EXIF使用3.1 图像的EXIF3.1.1 基本介绍3…

车载以太网MACsec

车载以太网MACsec 1.概述 MACsec(Media Access Control Security)定义了基于 IEEE 802 局域网络的数据安全通信的方法。MACsec 可为用户提供安全的 MAC 层数据发送和接收服务,包括用户数据加密(Confidentiality)、数…

新浪股票接口获取历史数据

这两天做了一个调用新浪股票接口获取实时以及历史股票数据的应用,因为新浪没有公开关于其接口的官方文档,所以通过各种百度差了很多关于新浪股票接口的使用,不过大家基本都是转载或者直接复制,对于实时数据的获取讲的很详细&#…

Linux【系统学习】(shell篇)

第 1 章 Shell 概述 1)Linux 提供的 Shell 解析器有 Ubuntu 使用的是dash 2)bash 和 sh 的关系 3)Centos 默认的解析器是 bash 第 2 章 Shell 脚本入门 1)脚本格式 (结尾不是必须以 .sh 结尾,只是为了区…

《网络安全0-100》VPN 讲解

1、前言 VPN虽好可不要贪玩哦 2、VPN的概念和结构 VPN:虚拟专用网(virtual personal network)是利用internet等公共网络的基础设施,通过隧道技术,为用户提供的专用网络具有相同通信功能的安全数据通道。 ‘虚拟’是指用户无需建立各逻辑上的专用物理线…