Mybatis 分页

目录

一、Mybatis Plus 分页

1. 配置

(1)依赖

(2)创建MybatisPlusConfig配置类,配置分页插件

2. 纯代码分页查询

(1) 执行查询(这里调用的是IService接口的page方法,也可以使用BaseMapper接口的selectPage方法)

(2) 返回结果

3. 自定义sql分页

(1)mapper接口

(2)自定义SQL

(3)代码

(4)返回结果

(5)不分页查询

二、PageHelper分页

 1.配置

(1)依赖 

(2) 配置文件

 2.自定义SQL分页

(1)mapper接口

(2)自定义SQL

(3)代码

(4)返回结果

(5)不分页查询


一、Mybatis Plus 分页

1. 配置
(1)依赖
        <!-- mybatis-plus 依赖--><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-extension</artifactId><version>3.4.3.4</version></dependency><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.4.3.4</version></dependency>
(2)创建MybatisPlusConfig配置类,配置分页插件
package com.example.pagetest.conf;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;/*** MybatisPlus配置类*/
@Configuration
public class MyBatisPlusConfig {/*** MybatisPlus拦截器添加分页插件** @return*/@Beanpublic MybatisPlusInterceptor mybatisPlusInterceptor() {MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();interceptor.addInnerInterceptor(new PaginationInnerInterceptor());return interceptor;}
}
2. 纯代码分页查询
(1) 执行查询(这里调用的是IService接口的page方法,也可以使用BaseMapper接口的selectPage方法)
    @GetMapping("/list/page")public Page listPage(Integer sex, Long pageCurrent, Long pageSize) {log.info("current: {}, pageSize: {}", pageCurrent, pageSize);// 构造查询条件QueryWrapper queryWrapper = new QueryWrapper<>();queryWrapper.eq("sex", sex);// 创建分页对象Page<User> page = new Page<>(pageCurrent, pageSize);// 调用IService接口的page方法,执行分页查询Page<User> userPage = userService.page(page, queryWrapper);return userPage;}
(2) 返回结果

{

    "records": [

        {

            "id": 1,

            "name": "张三",

            "age": 18,

            "sex": 0,

            "createTime": null,

            "createBy": null

        },

        {

            "id": 2,

            "name": "李四",

            "age": 19,

            "sex": 0,

            "createTime": null,

            "createBy": null

        }

    ],

    "total": 4,

    "size": 2,

    "current": 1,

    "orders": [],

    "optimizeCountSql": true,

    "searchCount": true,

    "countId": null,

    "maxLimit": null,

    "pages": 2

}

3. 自定义sql分页
(1)mapper接口
@Mapper
public interface UserMapper extends BaseMapper<User> {IPage<User> selectListPage(IPage<User> page, @Param("sex") Integer sex);
}
(2)自定义SQL
    <select id="selectListPage" resultMap="BaseResultMap">selectid, name, age, sex, create_time, create_byfrom userwhere sex = #{sex}</select>
(3)代码
    @Overridepublic IPage<User> queryListPageBySQl(Integer sex, Long pageCurrent, Long pageSize) {// 创建分页对象Page<User> page = new Page<>(pageCurrent, pageSize);IPage<User> userPage = userMapper.selectListPage(page, sex);return userPage;}
(4)返回结果

        与之前类似

(5)不分页查询

        pageCurrent和pageSize均传入-1即可查询全部结果

二、PageHelper分页

 1.配置
(1)依赖 

依赖有pagehelper-spring-boot-starterpagehelper两种。pagehelper-spring-boot-starter是使用springboot进行自动装配,pagehelper需要自行在配置文件中配置拦截器插件。

        <dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper-spring-boot-starter</artifactId><version>1.4.1</version></dependency>
(2) 配置文件
pagehelper:# 指定数据库(可以不配置,插件会自动检测数据库的类型)helper-dialect: mysql# 分页合理化参数reasonable: true# 分页插件会从查询方法的参数值中,自动根据上面 params 配置的字段中取值,查找到合适的值时就会自动分页support-methods-arguments: true# 用于从对象中根据属性名取值(可以配置pageNum,pageSize,count,pageSizeZero,reasonable。不配置映射的用默认值。)params: count=countSql

reasonable:当该参数设置为 true 时,pageNum<=0 时会查询第一页, pageNum>pages(超过总数时),会查询最后一页。默认false 时,直接根据参数进行查询。默认false,如果pageNum<1或pageNum>pages会返回空数据

support-methods-arguments:分页插件会从查询方法的参数值中,自动根据上面 params 配置的字段中取值,查找到合适的值时就会自动分页

 2.自定义SQL分页
(1)mapper接口
    List<User> selectListPageHelper(Integer sex);
(2)自定义SQL
    <select id="selectListPageHelper" resultMap="BaseResultMap">selectid, name, age, sex, create_time, create_byfrom userwhere sex = #{sex}</select>
(3)代码
    @Overridepublic  PageInfo<User> queryListByPageHelper(Integer sex, Integer pageCurrent, Integer pageSize){// 第 1 个参数为当前页码数,第 2 个参数为每页显示的条数PageHelper.startPage(pageCurrent, pageSize);List<User> userList = userMapper.selectListPageHelper(sex);// 通过 PageInfo 获取分页信息PageInfo<User> pageInfo = new PageInfo<>(userList);return pageInfo;}
(4)返回结果

{

    "total": 4,

    "list": [

        {

            "id": 1,

            "name": "张三",

            "age": 18,

            "sex": 0,

            "createTime": null,

            "createBy": null

        },

        {

            "id": 2,

            "name": "李四",

            "age": 19,

            "sex": 0,

            "createTime": null,

            "createBy": null

        }

    ],

    "pageNum": 1,

    "pageSize": 2,

    "size": 2,

    "startRow": 1,

    "endRow": 2,

    "pages": 2,

    "prePage": 0,

    "nextPage": 2,

    "isFirstPage": true,

    "isLastPage": false,

    "hasPreviousPage": false,

    "hasNextPage": true,

    "navigatePages": 8,

    "navigatepageNums": [

        1,

        2

    ],

    "navigateFirstPage": 1,

    "navigateLastPage": 2

}

(5)不分页查询
PageHelper.startPage(pageCurrent, pageSize, false);

查询所有数据

a. pageSize传入小于等于0的值,pageCurrent不为空。

b. 第三个参数默认为true:只查询所有记录条数,不查询具体数据;若为false:则查询所有数据,而且会导致分页查询时total总记录数永远为-1

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

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

相关文章

微信小程序(六)tabBar的使用

注释很详细&#xff0c;直接上代码 新增内容&#xff1a; 1. 标签栏文字的内容以及默认与选中颜色 2. 标签栏图标的默认样式与选中样式 3. 标签选项路径页面 4.标签栏背景颜色 &#x1f43c;&#xff08;文末补充&#xff09;设置标签栏后为什么navigator标签无法跳转页面了 温…

【Dynamo学习笔记】Dynamo for Revit建模基础

目录 前言1 Revit模型的结构2 图元的操作2.1 图元的选择2.2 图元参数的读取和写入2.3 图元的创建2.3.2 创建轴网2.3.2 创建结构柱2.3.3 创建结构框架2.3.4 创建墙体 3 自定义节点 参考资料&#xff1a; &#xff08;1&#xff09; 罗嘉祥&#xff0c;宋姗&#xff0c;田宏钧. 《…

Baumer工业相机堡盟工业相机如何通过NEOAPI SDK使用相机日志跟踪功能(C#)

Baumer工业相机堡盟工业相机如何通过NEOAPI SDK使用相机日志跟踪功能&#xff08;C#&#xff09; Baumer工业相机Baumer工业相机NEOAPI SDK和短曝光功能的技术背景Baumer工业相机通过NEOAPI SDK使用相机日志跟踪功能1.引用合适的类文件2.通过NEOAPI SDK使用相机日志跟踪功能3.通…

burp靶场--ssrf

burp靶场–ssrf 1.什么是ssrf 服务器端请求伪造是一种 Web 安全漏洞&#xff0c;允许攻击者导致服务器端应用程序向非预期位置发出请求。 在典型的 SSRF 攻击中&#xff0c;攻击者可能会导致服务器连接到组织基础设施内的仅供内部使用的服务。在其他情况下&#xff0c;他们可…

python数字图像处理基础(七)——直方图均衡化、傅里叶变换

目录 直方图均衡化均衡化原理均衡化效果标准直方图均衡化自适应直方图均衡化 傅里叶变换原理低通滤波高通滤波 直方图均衡化 均衡化原理 图像均衡化是一种基本的图像处理技术&#xff0c;通过更新图像直方图的像素强度分布来调整图像的全局对比度。这样做可以使低对比度的区域…

Docker安装开源Blog(Typecho)

前言 首先这个镜像是centos7.9进行安装PHP环境&#xff0c;然后挂载目录去运行的&#xff0c;镜像大概300MB左右&#xff0c;没学过PHP&#xff0c;没办法给Dockerfile文件 参考文章&#xff1a;Docker安装Typecho | D-y Blog感知不强&#xff0c;图一乐https://www.wlul.top…

IntelliJ IDEA 拉取gitlab项目

一、准备好Gitlab服务器及项目 http://192.168.31.104/root/com.saas.swaggerdemogit 二、打开 IntelliJ IDEA安装插件 打开GitLab上的项目&#xff0c;输入项目地址 http://192.168.31.104/root/com.saas.swaggerdemogit 弹出输入登录用户名密码&#xff0c;完成。 操作Comm…

学习JavaEE的日子 day13 封装 static private this 类加载机制

Day13 1. private – 私有化 理解&#xff1a;private是访问修饰符的一种&#xff0c;访问修饰符规定了访问权限. 作用&#xff1a; ​ 1.private修饰属性&#xff1a;该属性只能在类的内部使用 ​ 2.private修饰方法&#xff1a;该方法只能在类的内部使用 应用场景&#xff1…

vue+elenemt分页+springboot

1、编写模板 <!-- 搜素框 --><el-input placeholder"请输入姓名" v-model"keyWord" style"width: 400px"><el-button slot"append" icon"el-icon-search" click"searchByKeyword()"></el-bu…

HBuilder X中uView UI框架的安装及使用

开发工具: HBuilder X 在最上方的工具中点击 插件安装 ——> 安装新插件 ——> 前往插件市场安装 在作者排行榜中找到 uView UI 选择该版本 然后点击下载并导入HBuilder X 然后选择你想导入的项目 在项目根目录中的main.js中&#xff0c;引入并使用uView的JS库&#xff…

《Linux C编程实战》笔记:出错处理

这一节书上把它放到线程这一章&#xff0c;按理说应该在前面就讲了 头文件errno.h定义了变量errno&#xff0c;它存储了错误发生时的错误码&#xff0c;通过错误码可以得到错误的信息 程序开始执行时&#xff0c;变量errno被初始化为0。很多库函数在执行过程中遇到错误时就会…

数字身份所有权:Web3时代用户数据的掌控权

随着Web3时代的来临&#xff0c;数字身份的概念正焕发出崭新的光芒。在这个数字化的时代&#xff0c;用户的个人数据变得愈加珍贵&#xff0c;而Web3则为用户带来了数字身份所有权的概念&#xff0c;重新定义了用户与个人数据之间的关系。本文将深入探讨Web3时代用户数据的掌控…

COCO数据集下载

目录 数据集介绍 方法一 方法二 数据集介绍 COCO&#xff08;Common Objects in Context&#xff09;数据集是一个广泛用于计算机视觉任务的大型图像数据集。它是由微软研究&#xff08;Microsoft Research&#xff09;创建的&#xff0c;旨在促进计算机视觉领域的研究和发展…

C++ STL ->priority_queue(优先级队列)

文章目录 priority_queue的使用priority_queue建小堆 priority_queue模拟实现emptysizetoppush仿函数 pop参考源码 优先级队列&#xff1a; priority_queue文档 优先队列是一种容器适配器&#xff0c;根据严格的弱排序标准&#xff0c;它的第一个元素总是它所包含的元素中最大的…

2024华数杯国际赛数学建模选题建议及初步思路

大家好呀&#xff0c;华数杯国际赛数学建模开始了&#xff0c;来说一下初步的选题建议吧&#xff1a; 首先定下主基调&#xff0c; 本次华数杯国际赛推荐选择A题。 难度上AB差不多&#xff0c;但是B很难做得出彩&#xff0c;主要就是搜集数据以及相关参考文献&#xff0c;可用…

uni-app的组件(二)

多项选择器checkbox-group 多项选择器&#xff0c;内部由多个 checkbox 组成。 <checkbox-group><checkbox checked color"red" value"1"></checkbox> 篮球<!-- disabled:是否禁用 --><checkbox disabled color"rgba(0,0…

计算机系统基础知识揭秘:硬件、处理器和校验码

计算机系统基础知识揭秘&#xff1a;硬件、处理器和校验码 一、计算机系统基础知识的重要性二、计算机系统硬件2.1、内存和存储设备2.2、输入输出设备 三、中央处理器&#xff08;CPU&#xff09;3.1、运算器3.2、控制器3.3、寄存器组3.4、多核CPU 四、数据表示4.1、原码、反码…

bash shell基础命令(二)

文章目录 1.监测程序1.1 ps命令1.2 top命令1.3 kill命令 2.检测磁盘空间2.1 mount命令2.2 umount命令2.3 df命令2.4 du命令 3.处理数据文件3.1 sort命令3.2 grep命令3.3 gzip命令3.4 tar命令 1.监测程序 1.1 ps命令 ps命令可以用来检测系统进程。 $ psPID TTY TIME…

突破通胀风险,聚焦现货黄金投资机遇

随着全球经济不断发展和金融市场的波动&#xff0c;通胀风险成为各界关注的焦点。在面对通胀带来的财务压力和资产贬值的威胁时&#xff0c;投资者都在寻找稳定且可靠的避险资产。而现货黄金作为一种值得瞩目的投资工具&#xff0c;正吸引着越来越多投资者的目光。 黄金作为一种…

大数据 - Kafka系列《一》- Kafka基本概念

目录 &#x1f436;1.1 什么是kafka &#x1f436;1.2 Kafka可以用来做什么 &#x1f436;1.3 kafka的特点 &#x1f959;1. 高吞吐量、低延迟 &#x1f959;2. 可扩展性 &#x1f959;3. 持久性、可靠性 &#x1f959;4. 容错性 &#x1f959;5. 高并发 &#x1f436…