MyBatisplus分页插件

文章目录

          • 一、后台分页配置
            • 1. 配置分页插件
            • 2. 编写分页代码
            • 3. 测试
          • 二、自定义查询
            • 2.1. 自定义接口
            • 2.2. 自定义查询
            • 2.3. 测试自定义分页

一、后台分页配置

MyBatis Plus自带分页插件(即BaseMapper接口中的selectPage()方法),只要简单的配置即可实现分页功能,具体步骤如下:

1. 配置分页插件

新创一个配置类,在配置类里面配置分页插件

package com.gblfy.flowable.config;import com.baomidou.mybatisplus.annotation.DbType;
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 分页插件配置** @Author gblfy* @Date 2022-05-04 14:41**/
@Configuration
public class MyBatisPlusPaginationInnerConfig {/*** 分页插件(官网最新)*/@Beanpublic MybatisPlusInterceptor mybatisPlusInterceptor() {MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));return interceptor;}}
2. 编写分页代码

分页的所有数据都在userPage对象中封装着,所以可以调用userPage对象的一系列方法对分页数据进行操作。

  package com.gblfy.flowable.service.impl;import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.gblfy.flowable.entity.SysUser;
import com.gblfy.flowable.mapper.SysUserMapper;
import com.gblfy.flowable.service.SysUserService;
import com.gblfy.flowable.tools.pager.PagerModel;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;import java.util.List;/*** <p>* 用户信息表 服务实现类* </p>** @author gblfy* @since 2022-05-04*/
@Slf4j
@Service
public class SysUserServiceImpl implements SysUserService {@Autowiredprivate SysUserMapper userMapper;@Overridepublic PagerModel<SysUser> list(Page<SysUser> page, QueryWrapper<SysUser> queryWrapper) {Page<SysUser> userIPage = userMapper.selectPage(page, queryWrapper);// 分页的所有数据都在userPage对象中封装着// 获取总页数long pages = userIPage.getPages();//一页显示几条数据long size = userIPage.getSize();// 获取当前页long current = userIPage.getCurrent();// 获取当前页数据集合List<SysUser> records = userIPage.getRecords();// 获取总记录数long total = userIPage.getTotal();// 当前页是否有下一页boolean hasNext = userIPage.hasNext();// 当前页是否有上一页boolean hasPrevious = userIPage.hasPrevious();System.out.println("总页数pages=" + pages);System.out.println("当前页current=" + current);System.out.println("当前页显示几条数据size=" + size);System.out.println("当前页数据集合records=" + records);System.out.println("总记录数total=" + total);System.out.println("是否有下一页hasNext=" + hasNext);System.out.println("是否有上一页hasPrevious=" + hasPrevious);return new PagerModel<>(userIPage.getTotal(), records);}@Overridepublic Page<SysUser> listPage(Page<SysUser> page, QueryWrapper<SysUser> queryWrapper) {return userMapper.selectPage(page, queryWrapper);}
}
3. 测试

当前数据库的user表中有14条记录,设置当前页数为1,每页记录数为10。
如图:
在这里插入图片描述

在这里插入图片描述

controller

package com.gblfy.flowable.controller;import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.gblfy.flowable.entity.SysUser;
import com.gblfy.flowable.service.SysUserService;
import com.gblfy.flowable.tools.pager.PagerModel;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;/*** MyBatisPlus 分页测试** @Author gblfy* @Date 2022-05-04 15:32**/
@RestController
@RequestMapping("/page")
public class MyBatisPlusPaginateController {@Autowiredprivate SysUserService userService;@GetMapping("/list")public PagerModel<SysUser> list(@RequestParam(value = "keyword", defaultValue = "") String keyword,@RequestParam(value = "pageNum", defaultValue = "1") Integer pageNum,@RequestParam(value = "pageSize", defaultValue = "5") Integer pageSize) {QueryWrapper<SysUser> queryWrapper = new QueryWrapper<>();//条件构造器queryWrapper.like("user_name", keyword);//模糊查询LikePage<SysUser> page = new Page(pageNum, pageSize);//分页插件return userService.list(page, queryWrapper);//查询数据}@GetMapping("/listPage")public Page<SysUser> listPage(@RequestParam(value = "keyword", defaultValue = "") String keyword,@RequestParam(value = "pageNum", defaultValue = "1") Integer pageNum,@RequestParam(value = "pageSize", defaultValue = "5") Integer pageSize) {QueryWrapper<SysUser> queryWrapper = new QueryWrapper<>();//条件构造器queryWrapper.like("user_name", keyword);//模糊查询LikePage<SysUser> page = new Page(pageNum, pageSize);//分页插件return userService.listPage(page, queryWrapper);//查询数据}
}

默认返回Page基本可以满足,如果自定义返回封装,参考以下案例即可

package com.gblfy.flowable.tools.pager;import lombok.Builder;
import lombok.Data;import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;/*** 分页** @author gblfy* @date 2022-05-03**/
@Data
@Builder(toBuilder = true)
public class PagerModel<T> implements Serializable {private static final long serialVersionUID = 4804053559968742915L;/*** 总记录数*/private long total;/*** 每页的查询结果集*/private List<T> rows = new ArrayList();/*** 获取总页数*/private long pages;/*** 获取当前页*/private long current;/*** 当前页显示几条数据*/private long size;/*** 当前页是否有下一页*/private boolean hasNext;/*** 当前页是否有上一页*/private boolean hasPrevious;public PagerModel() {}public PagerModel(long total, List<T> rows) {this.total = total;this.rows = rows;}public PagerModel(long total, List<T> rows, long pages, long current) {this.total = total;this.rows = rows;this.pages = pages;this.current = current;}public PagerModel(long total, List<T> rows, long pages, long current, long size) {this.total = total;this.rows = rows;this.pages = pages;this.current = current;this.size = size;}public PagerModel(long total, List<T> rows, long pages, long current, boolean hasNext, boolean hasPrevious) {this.total = total;this.rows = rows;this.pages = pages;this.current = current;this.hasNext = hasNext;this.hasPrevious = hasPrevious;}public PagerModel(long total, List<T> rows, long pages, long current, long size, boolean hasNext, boolean hasPrevious) {this.total = total;this.rows = rows;this.pages = pages;this.current = current;this.size = size;this.hasNext = hasNext;this.hasPrevious = hasPrevious;}
}
二、自定义查询
2.1. 自定义接口

如果想自定义查询那么在UserMapper.java里面写个方法

 Page<User> selectPageVo(@Param("page") Page<User> page,@Param("age") Integer age);
2.2. 自定义查询

UserMapper.xml文件的查询语句

<select id="selectPageVo" resultType="com.mybatis_plus.bean.User">SELECT id,name,age,email FROM user WHERE age>#{age}
</select>
2.3. 测试自定义分页
@Testvoid test02(){//测试自定义分页Page<User> page=new Page<>(1,3);userMapper.selectPageVo(page,20);//调用自定义的查询System.out.println(page.getRecords());//获取当前页数据 3条记录System.out.println(page.getSize());//获取每页的条数 3System.out.println(page.getCurrent()); //获取当前页码 1System.out.println(page.getPages());//获取总页数 2System.out.println(page.getTotal());//获取总记录数 4System.out.println(page.hasNext());//获取有没有下一页 trueSystem.out.println(page.hasPrevious());//获取是否有上一页 false}

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

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

相关文章

一个半月快速、低成本上云,云数据库专属集群解决方案看过来

在6月9日的“全速重构”2020阿里云线上峰会&#xff08;点击可查看数据库专场亮点&#xff09;中&#xff0c;阿里云智能数据库事业部的资深产品专家斗佛开启了全球首发4款云数据库新产品——云数据库专属集群、图数据库GDB、云数据库Cassandra版、云数据库ClickHouse。今天小编…

以容器为代表的云原生技术,正成为释放云价值最短路径

作者 | 丁宇&#xff08;叔同&#xff09; 阿里云智能容器平台负责人 云计算、大数据、人工智能等新技术正迅速的改变着我们所处的时代&#xff0c;其巨大的影响力已经从量变到质变&#xff0c;数字化转型成为企业发展的必然选择。 据IDC报告&#xff0c;全球前1000的大企业中…

搭载敏捷飞天底座,阿里云专有云敏捷版全面升级

6月9日&#xff0c; 在2020阿里云线上峰会上阿里云混合云重磅发布三款新品&#xff1a;专有云敏捷版&#xff08;Apsara Stack Agility&#xff09;、 混合云管理平台&#xff08;Apsara Uni-manager&#xff09;以及下一代企业级一站式DevOps平台“云效”。阿里云智能资深技术…

云·越2021 | 移动云开发者社区网站焕新升级

云上磨一剑&#xff0c;砥砺自生辉移动云开发者社区挥手2020&#xff0c;焕新2021迎来社区功能全新升级现已正式上线移动云开发者社区自2020年11月对外发布以来&#xff0c;依托移动云全面的云能力、丰富的产品体系、专业领域能力培训认证、优质双创服务体系等核心资源&#xf…

系统架构设计师 - 软件架构设计 - 软件架构风格

文章目录软件架构风格描述数据流风格批处理风格管道过滤器风格调用返回风格主子程序风格面向对象&#xff08;显式调用风格&#xff09;层次结构风格独立构件风格调用返回风格(隐式调用)虚拟机风格基于规则风格解释器风格仓库风格数据库风格黑板系统浏览器风格两层CS架构三层CS…

如何开启redis5的远程访问权限

如何开启redis的远程访问权限   本地客户端或者程序要连接服务器上面的redis的时候&#xff0c;可能出现连接不上&#xff0c;因为redis默认只允许本机访问。需要修改redis目录下面的redis.conf文件。   1、将bind 127.0.0.1 注释掉&#xff1a;#bind 127.0.0.1   默认只…

阿里巴巴HRSSC:用宜搭实现业务管理模式创新

快速上线全球100支工单流程&#xff0c;为员工提供千人千面的HR自助服务……借助阿里巴巴旗下低代码应用搭建平台“宜搭”&#xff0c;仅仅历时3个月&#xff0c;阿里巴巴HR共享服务中心全新上线&#xff0c;标志着全面服务阿里巴巴生态化、全球化的HR共享服务平台诞生了。 作…

从零入门Serverless|一文详解Serverless技术选型

作者 | 李国强 阿里云资深产品专家 本文整理自《Serverless 技术公开课》。关注“Serverless”公众号&#xff0c;回复“入门”&#xff0c;即可获取 Serverless 系列文章 PPT。 今天来讲&#xff0c;在 Serverless 这个大领域中&#xff0c;不只有函数计算这一种产品形态和…

肖修鹏:十年磨一剑,成就靠谱职业经理人

云栖号资讯&#xff1a;【点击查看更多行业资讯】 在这里您可以找到不同行业的第一手的上云资讯&#xff0c;还在等什么&#xff0c;快来&#xff01; 简介&#xff1a; 曾是科大讯飞15年资深专家&#xff0c;深耕人工智能领域&#xff0c;始终坚守智能语音赛道&#xff0c;时任…

微信小程序添加开发者、赋予权限、添加体验者

使用管理员账号扫码->登录小程序后台 https://mp.weixin.qq.com/wxamp/home/guide 【管理】-【成员管理】-【项目成员】-【添加成员】 编辑权限->个别权限调整 权限调整完毕后&#xff0c;点击保存

系统架构设计师 - 软件架构设计 - 基于架构开发方法 ABSD (Architecture-Based Soft Design)

文章目录基于架构的开发方法体系结构需求体系结构设计体系结构文档化体系结构复审体系结构实现体系结构演化语义上的 "体系结构" "架构"基于架构的开发方法 自定向下,逐层细化.系统- 子系统 - 逻辑构件 - 实际构件 . 采用视角和视图描述软件架构 ; 用例描…

如何构建低延时直播体验,让互动更实时?

QuestMobile《2020中国移动直播行业“战疫”专题报告》数据显示&#xff0c; 疫情期间&#xff0c;看直播成为休闲娱乐、获取资讯、上课学习的主要方式&#xff0c;一些高度依赖线下场景的行业也纷纷通过直播进行自救&#xff0c;线上转型直播卖货&#xff0c;政府部门也通过直…

疫情中的2021,云原生会走向哪里

头图 | 付费下载于视觉中国 翻译 | Daixiang&#xff08;华为云原生团队&#xff09;

Flink在快手实时多维分析场景的应用

作者&#xff1a;董亭亭、徐明 摘要&#xff1a;作为短视频分享跟直播的平台&#xff0c;快手有诸多业务场景应用了 Flink&#xff0c;包括短视频、直播的质量监控、用户增长分析、实时数据处理、直播 CDN 调度等。此次主要介绍在快手使用 Flink 在实时多维分析场景的应用与优化…

小程序发布流程

上一篇&#xff1a;企业微信小程序~开启线上真机调试模式https://blog.csdn.net/weixin_40816738/article/details/124847862 文章目录一、小程序信息补充1. 小程序信息补充2. 小程序名称3. 小程序简称4. 小程序头像5. 小程序介绍6. 案例效果图二、小程序类目2.1. 小程序类目补…

一周上线系统,效率提升100%,宜搭助力阿里巴巴法务数字化升级

程序员小王正坐在电脑前写代码&#xff0c;屏幕跳出一条提醒&#xff1a;“亲&#xff0c;你于2019年6月5日提交的创新提案&#xff0c;已经通过专利审批。”这是来自阿里巴巴知识产权管理系统的通知&#xff0c;当公司权利库内的某项权利&#xff08;比如专利&#xff09;的状…

系统架构设计师 - 软件架构设计 - 特定领域软件架构DSSA(Domain Speciffic Softwore Architecture)

特定领域软件架构 某一特定应用领域内&#xff0c;为一组应用提供组织结构参考标准、高层次的软件架构 横向特定领域&#xff1a; 例如持久层设计领域 纵向特定领域&#xff1a; 例如供应链系统领域 活动过程 领域分析&#xff1a;根据领域知识 &#xff0c;获取特定领域内 …

nginx 负载均衡 使用非root用户

文章目录一、安装配置1.依赖下载2.软件下载3.解压nginx4.编译、安装二、配置与权限2.1. 赋予权限2.2. 一个端口2.3. 2个端口三、部署与启动3.1. 指定配置文件启动3.2. 指定配置文件重启一、安装配置 1.依赖下载 yum -y install gcc zlib zlib-devel pcre-devel2.软件下载 wg…

“寒武纪大爆发”之后的云原生,2021年走向何处?

【编者按】云原生已无处不在&#xff0c;《云原生人物志》是CSDN重磅推出的系列原创采访&#xff0c;我们关注云原生中每一个技术人、公司的身影。知微见著&#xff0c;窥见云原生价值与趋势。 2021新年之初&#xff0c;来听听Tetrate 布道师、CNCF Ambassador、云原生社区及 S…