MyBatisPlus(十五)分页查询

news2025/1/10 23:54:30

说明

MyBatisPlus 提供了分页查询的功能。

MyBatisPlus 的分页功能,是通过分页插件实现的。要使用分页功能,需要配置分页插件的拦截器。

MyBatisPlus 的分页功能,可以通过内置的API接口实现;也可以通过自定义的 mapper#method 使用分页。

分页插件拦截器

此处的代码可以参考官网的示例。

package com.example.core.config;

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

@Configuration
@MapperScan("com.example.web")
public class MybatisPlusConfig {

    /**
     * 添加分页插件
     */
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));// 如果配置多个插件,切记分页最后添加
        // interceptor.addInnerInterceptor(new PaginationInnerInterceptor()); 如果有多数据源可以不配具体类型 否则都建议配上具体的DbType
        return interceptor;
    }
}

官网示例:
在这里插入图片描述

分页查询(MyBatisPlus接口)

代码

    /**
     * 分页查询用户列表。
     * <br>
     * 查询条件:查询第2页的数据,每页3条数据。
     */
    @Test
    void selectPage() {
        LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
        IPage<User> pageQuery = new Page<>(2, 3);
        IPage<User> page = mapper.selectPage(pageQuery, wrapper);

        log.info("当前页码:{}", page.getCurrent());
        log.info("每 1 页的数据量:{}", page.getSize());
        log.info("总数据量:{}", page.getTotal());
        log.info("总页数:{}", page.getPages());
        log.info("数据列表:{}", page.getRecords());
    }

查询效果

在这里插入图片描述

自定义的 mapper#method 使用分页

官网说明

在这里插入图片描述

代码示例

查询方法:Mapper.java

package com.example.web.mapper;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.example.web.entity.User;

import java.util.List;

public interface MybatisMapper {

    /**
     * 分页查询用户列表。
     *
     * @param page     分页参数
     * @param beginAge 开始年龄(大于等于)
     * @return 用户列表分页数据
     */
    IPage<User> selectPageByBeginAge(IPage<User> page, Integer beginAge);

}

方法实现:Mapper.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.web.mapper.MybatisMapper">

    <select id="selectPageByBeginAge" resultType="com.example.web.entity.User">
        select * from tb_user where age >= #{beginAge}
    </select>

</mapper>

方法调用

    /**
     * 分页查询用户列表。
     * <br>
     * 查询条件:开始年龄(大于等于),查询第2页的数据,每页3条数据。
     */
    @Test
    void selectPage() {
        IPage<User> pageQuery = new Page<>(2, 3);
        IPage<User> page = mapper.selectPageByBeginAge(pageQuery, 20);

        log.info("当前页码:{}", page.getCurrent());
        log.info("每 1 页的数据量:{}", page.getSize());
        log.info("总数据量:{}", page.getTotal());
        log.info("总页数:{}", page.getPages());
        log.info("数据列表:{}", page.getRecords());
    }

查询效果

在这里插入图片描述

数据库内的数据

在这里插入图片描述

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

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

相关文章

第七章 正交实验法用例评审bug管理流程

一、正交试验法 利用因果图来设计测试用例时,作为输入条件的原因与输出结果之间的因果关系,有时很难从软件需求规格说明中得到。往往因果关系非常庞大,以至于据此因果图得到的测试用例数目多的惊人,给软件测试带来沉重的负担,为了有效地合理地减少测试的工时与费用,可利…

合并不同门店数据-上下合并

项目背景&#xff1a;线下超市分店&#xff0c;统计产品的销售数量和销售额&#xff0c;并用透视表计算求和 merge()函数可以根据链接键横向连接两张不同表&#xff0c;concat()函数可以上下合并和左右合并2种不同的合并方式。merge()函数只能横向连接两张表&#xff0c;而con…

海信电视U8“死磕”技术,家庭影音娱乐的体验突围

最近《奥本海默》上映&#xff0c;导致我无心工作&#xff0c;沉迷抢票。因为北京能播放该片IMAX 1.43画幅的影院只有一家&#xff0c;场场爆满&#xff0c;一票难求。 这次经历也让我对科技产业多了一点思考。流媒体火爆之后&#xff0c;电影发烧友还是会去影院看电影&#xf…

企业信息查询平台:天眼销正式上线!

在团队的不断努力下&#xff0c;天眼销平台终于和大家见面了&#xff01;总所周知我们是一家数据服务提供商&#xff0c;作为西南数据交易所的数据提供商之一&#xff0c;之前主要是面向B端客户提供数据服务。现在&#xff0c;我们上线的天眼销&#xff08;tianyanxiao.)主要面…

Android ncnn-android-yolov8-seg源码解析 : 实现人像分割

1. 前言 上篇文章&#xff0c;我们已经将人像分割的ncnn-android-yolov8-seg项目运行起来了&#xff0c;后续文章我们会抽取出Demo中的核心代码&#xff0c;在自己的项目中&#xff0c;来接入人体识别和人像分割功能。 先来看下效果&#xff0c;整个图像的是相机的原图&#…

增强现实抬头显示AR-HUD

增强现实抬头显示&#xff08;AR-HUD&#xff09;可以将当前车身状态、障碍物提醒等信息3D投影在前挡风玻璃上&#xff0c;并通过自研的AR-Creator算法&#xff0c;融合实际道路场景进行导航&#xff0c;使驾驶员无需低头即可了解车辆实时行驶状况。结合DMS系统&#xff0c;可以…

【C++】C++11(万能模版、完美转发,可变参数模版,lambda表达式,包装器function+bind绑定)

前言&#xff1a; 我们上一章一节已经接触了C11的一些特性&#xff0c;本章将继续更深入介绍C11中其他使用且重要的一些功能。 目录 &#xff08;一&#xff09;万能模版和完美转发 1、万能模版 2、完美转发 &#xff08;二&#xff09;可变参数模版 1、可变参数模版的使…

【Node.js】NPM 和 package.json

NPM npm 是 Node.js 的包管理工具&#xff0c;基于命令行&#xff0c;用于安装、升级、移除、管理依赖项。 常用命令&#xff1a; npm init&#xff1a;初始化一个新的 npm 项目&#xff0c;创建 package.json 文件。&#xff08;括号里为默认值&#xff09; description&am…

信息可视化和数据可视化的异同和其他比较,到底怎么区分呢?

什么是数据可视化? 根据维塔利弗里德曼的说法&#xff1a; “数据可视化的主要目标是通过图形方式清晰有效地传达数据。” 数据可视化是将数据转化为图表、图形、地图等视觉元素的过程&#xff0c;以便人们更容易理解数据的趋势、关系和模式。它通常强调的是对数据的视觉呈…

Git开发环境使用

目录 git简单介绍 问题 在Git Bash下的操作 在工具idea中使用git 创建分支 合并分支 部分命令合集 git简单介绍 Linux发布了一套属于自己的版本控制系统&#xff0c;运用git可以实现&#xff0c; 代码回溯 &#xff0c; 版本切换 因为是Git是分布式版本控制系统&#x…

unity脚本_Time c#

Time 用于游戏中参与位移 计时 时间暂停等 时间缩放比例&#xff1a; 首先在场景上新建一个空物体 将脚本挂载到空物体上运行 另外重要的两点

从「博客园」的困境,到「用爱发电」~

听人劝、吃饱饭,奉劝各位小伙伴,不要订阅该文所属专栏。 作者:不渴望力量的哈士奇(哈哥),十余年工作经验, 跨域学习者,从事过全栈研发、产品经理等工作,现任研发部门 CTO 。荣誉:2022年度博客之星Top4、博客专家认证、全栈领域优质创作者、新星计划导师,“星荐官共赢计…

JavaScript中的map()和forEach()方法有什么区别?

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 欢迎来到前端入门之旅&#xff01;感兴趣的可以订阅本专栏哦&#xff01;这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…

【javaweb】学习日记Day11 - tlias智能管理系统 - 文件上传 新增 修改员工 配置文件

目录 一、员工管理功能开发 1、新增员工 postman报错500的原因 &#xff08;1&#xff09;Controller类 &#xff08;2&#xff09;Service类 &#xff08;3&#xff09;Mapper类 2、根据ID查询 &#xff08;1&#xff09;Controller类 &#xff08;2&#xff09;Serv…

【网络安全 --- kali2023安装】超详细的kali2023安装教程(提供镜像资源)

如果你还没有安装vmware 虚拟机&#xff0c;请参考下面博客安装 【网络安全 --- 工具安装】VMware 16.0 详细安装过程&#xff08;提供资源&#xff09;-CSDN博客【网络安全 --- 工具安装】VMware 16.0 详细安装过程&#xff08;提供资源&#xff09;https://blog.csdn.net/m0…

mysql MVCC(多版本并发控制)理解

最近看MVCC相关资料&#xff0c;这边做一个记录总结&#xff0c;方便后续理解。 目录 一、MVCC相关概念 二、MVCC实现原理 1.隐藏字段 2.undo log 3.Read View 4.MVCC的整体处理流程 5. RC&#xff0c;RR级级别下的innoDB快照读有什么不同 6.总结 一、MVCC相关概念 1…

在Ubuntu中批量创建用户

一、背景知识 在Linux操作系统中创建新用户可以使用useradd或adduser命令。 使用useradd命令创建用户时&#xff0c;不会在/home目录下创建用户文件夹&#xff0c;需要用户自己指定主目录和bash目录的位置。同时&#xff0c;创建的用户没有设置密码&#xff0c;无法进行登录&a…

electronjs入门-聊天应用程序,与Electron.js通信

随着第一章中构建的应用程序&#xff0c;我们将开始将其与Electron框架中的模块集成&#xff0c;并以此为基础&#xff0c;以更实用的方式了解它们。 过程之间的通信 根据第二章中的解释&#xff0c;我们将发送每个进程之间的消息&#xff1b;具体来说联系人和聊天&#xff1…

对于无法直接获取URL的数据爬虫

在爬学校安全教育题库的时候发现题库分页实际上执行了一段js代码&#xff0c;如下图所示 点击下一页时是执行了函数doPostBack&#xff0c;查看页面源码如下 点击下一页后这段js提交了一个表单&#xff0c;随后后端返回对应数据&#xff0c;一开始尝试分析获取对应两个参数&a…

MM-Camera架构-ProcessCaptureRequest 流程分析

文章目录 processCaptureRequest\_3\_41.1 mDevice1.2 mDevice->ops->process\_capture\_request1.3 hardware to vendor mct\_shimlayer\_process\_event2.1 mct\_shimlayer\_handle\_parm2.2 mct\_shimlayer\_reg\_buffer processCaptureRequest_3_4 sdm660的摄像头走…