SpringBoot集成MyBatis-Plus实现分页查询

  1. 引入MyBatis-Plus依赖,下面注意指定自己的MyBatis-Plus版本。
<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>${mybatis-plus.version}</version>
</dependency>
  1. 配置分页查询插件,将其配置到启动类或者配置类都可以。
@Bean
@ConditionalOnMissingBean
public MybatisPlusInterceptor mybatisPlusInterceptor() {MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();PaginationInnerInterceptor paginationInnerInterceptor = new PaginationInnerInterceptor(DbType.MYSQL);paginationInnerInterceptor.setMaxLimit(200L);// 限制每页最多显示200条记录。interceptor.addInnerInterceptor(paginationInnerInterceptor);return interceptor;
}
  1. 准备好数据库表,以及对应的实体类,并且准备好对应的mapper以及service
@TableName("t_user") // 注解设置实体类对应数据库的表名
@Data
@ToString
@NoArgsConstructor
@AllArgsConstructor
public class User {// MyBatisPlus默认将主键 id作为主键,但是表的字段名可能不是 id,可能是 uid之类的// @TableId注解将该属性作为主键,如遇到表中字段名不为id且是主键是要通过 @TableId注解// 若实体类和表中表示主键的不是id,而是其他字段,例如uid,程序抛出异常,Field 'uid' doesn't have a default value,说明MyBatis-Plus没有将uid作为主键赋值// value 属性用于指定主键的字段// type 属性用于指定自增策略(默认雪花算法)// IdType.AUTO 根据数据库最大id值自增(前提是设置了该字段设置了 auto_increment)// IdType.ASSIGN_ID 雪花算法生成 id(默认)// IdType.ASSIGN_UUID 生成UUID 作为字段的 id// IdType.NONE 不使用任何主键生成策略,由程序自行生成主键。@TableId(value = "id", type = IdType.ASSIGN_ID)private Long id;//非主键 -> 通过 @TableField("name")注解将实体类的属性映射到表的对应字段@TableField("name")private String name;private Integer age;private String email;private SexEnum sex;//逻辑删除(用于数据恢复)@TableLogicprivate Integer isDelete;
}
@Repository
public interface UserMapper extends BaseMapper<User> {}
  1. 封装vo类返回Page对象
import com.baomidou.mybatisplus.core.metadata.OrderItem;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.Data;import java.util.Objects;@Data
public class PageQuery<T> {private final static Integer DEFAULT_PAGE_NUM = 1;private final static Integer DEFAULT_PAGE_SIZE = 5;private Integer pageNo = DEFAULT_PAGE_NUM;private Integer pageSize = DEFAULT_PAGE_SIZE;private String sortBy = "age";// 排序字段,默认使用 ageprivate Boolean isAsc = true;// 排序方式,默认升序public Page<T> toMpPage(String sortBy, Boolean isAsc, Integer pageNo, Integer pageSize) {if (!StringUtils.isBlank(sortBy)) {this.sortBy = sortBy;}if (!Objects.isNull(isAsc)) {this.isAsc = isAsc;}if (!Objects.isNull(pageNo)) {this.pageNo = pageNo;}if (!Objects.isNull(pageSize)) {this.pageSize = pageSize;}Page<T> page = new Page<>(this.pageNo, this.pageSize);OrderItem orderItem = new OrderItem();orderItem.setAsc(this.isAsc);orderItem.setColumn(this.sortBy);page.addOrder(orderItem);return page;}
}
  1. 测试分页结果
public class TestPage {@Autowiredprivate UserMapper userMapper;@Testpublic void testPage() {PageQuery<User> pageQuery = new PageQuery<>();Page<User> page = pageQuery.toMpPage("age", true, 1, 5);Page<User> resPage = userMapper.selectPage(page, new LambdaQueryWrapper<>());// 传入page对象以及LambdaQueryWrapperSystem.out.println(resPage.getCurrent());// 当前页码System.out.println(resPage.getSize());// 每页显示条数System.out.println(resPage.getPages());// 总页数System.out.println(resPage.getTotal());// 总记录数List<User> records = resPage.getRecords();// 符合条件的记录records.forEach(System.out::println);}
}

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

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

相关文章

Axure的使用

1.Axure是什么&#xff1f;&#xff1f;&#xff1f; Axure是一款功能强大的原型设计工具&#xff0c;它可以让用户快速地创建交互式原型&#xff0c;并针对原型进行测试和改进。Axure的主要特点包括可定制的界面元素库、交互动画效果、条件逻辑、团队协作等功能&#xff0c;适…

digit函数

题目描述 在程序中定义一函数 digit(n,k)&#xff0c;它能分离出整数 n 从右边数第 k 个数字。 输入格式 正整数 n 和 k。 输出格式 一个数字。 输入输出样例 输入 #1 31859 3 输出 #1 8 说明/提示 n≤10^9。 k≤10。 因为用整数n来做有点难&#xff0c;所以我用…

day02、数据库系统的结构抽象与演变

数据库系统的结构抽象与演变 1、数据库系统的标准结构1.1 分层抽象1.2 数据视图与模式1. 3 三级模式与两层映像是数据系统的标准结构1.4 逻辑独立性与物理独立性 2 数据模型、数据、模式三者区别3. 文件系统到数据库&#xff08;数据的不可再分特性&#xff0c;我们将他称为第一…

python:五种算法(SSA、WOA、GWO、PSO、GA)求解23个测试函数(python代码)

一、五种算法简介 1、麻雀搜索算法SSA 2、鲸鱼优化算法WOA 3、灰狼优化算法GWO 4、粒子群优化算法PSO 5、遗传算法GA 二、5种算法求解23个函数 &#xff08;1&#xff09;23个函数简介 参考文献&#xff1a; [1] Yao X, Liu Y, Lin G M. Evolutionary programming made…

在做题中学习(32):只出现一次的数字 III

260. 只出现一次的数字 III - 力扣&#xff08;LeetCode&#xff09; 根据题目可知&#xff1a;有两个元素只出现一次&#xff0c;其余出现两次。 而在只出现一次的数字 I 里&#xff0c;只有一个元素出现一次&#xff0c;可以用异或的方式直接得到最后的答案&#xff0c;而此…

(C++)长度最小的子数组--滑动窗口

个人主页&#xff1a;Lei宝啊 愿所有美好如期而遇 力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台备战技术面试&#xff1f;力扣提供海量技术面试资源&#xff0c;帮助你高效提升编程技能&#xff0c;轻松拿下世界 IT 名企 Dream Offer。https://le…

智能优化算法应用:基于鸟群算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于鸟群算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于鸟群算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.鸟群算法4.实验参数设定5.算法结果6.参考文献7.MA…

时间序列预测 — CNN-LSTM实现多变量多步光伏预测(Tensorflow)

目录 1 数据处理 1.1 导入库文件 1.2 导入数据集 1.3 缺失值分析 2 构造训练数据 ​3 模型训练 3.1 CNN-LSTM网络 3.2 模型训练 4 模型预测 专栏链接&#xff1a;https://blog.csdn.net/qq_41921826/category_12495091.html 1 数据处理 1.1 导入库文件 import scip…

【华为数据之道学习笔记】4-1信息架构的四个组件

企业在运作过程中&#xff0c;首先需要管理好人和物等“资源”&#xff0c;然后管理好各类资源之间的联系&#xff0c;即各类业务交易“事件”&#xff0c;再对各类事件的执行效果进行“整体描述和评估”&#xff0c;最终实现组织目标和价值。以一个通用的工业企业运营为例&…

[NAND Flash 3.2] 3D NAND 工艺与发展前沿

依公知及经验整理&#xff0c;原创保护&#xff0c;禁止转载。 专栏 《深入理解NAND Flash》 全文 6200 字&#xff0c;​2023.12.12 更新 1. 导论 1.1 何为 3D NAND? 3D NAND, 也叫做 Sumsung V-NAND, 是一种高密度闪存。 以前&#xff0c;把NAND闪存颗粒&#xff0c;直接…

Java键值对Pair的使用方式和操作流程

Java键值对Pair的使用方式和操作流程 什么是键值对 键值对是一种常见的数据结构&#xff0c;它由一个唯一的键&#xff08;key&#xff09;和与之关联的值&#xff08;value&#xff09;组成。键和值之间存在一种映射关系&#xff0c;通过键可以查找或访问对应的值。 在键值对…

数据库结构

三级结构 内模式&#xff1a;也称为物理模式&#xff0c;它是数据库中数据的物理存储表示&#xff0c;描述了数据在存储介质上的存储方式和物理结构&#xff0c;通常由数据库管理员进行定义。 概念模式&#xff1a;也称为逻辑模式&#xff0c;它是对数据库中全体数据的逻辑表示…

nodejs微信小程序+python+PHP健身服务应用APP-计算机毕业设计推荐 android

目 录 摘 要 I ABSTRACT II 目 录 II 第1章 绪论 1 1.1背景及意义 1 1.2 国内外研究概况 1 1.3 研究的内容 1 第2章 相关技术 3 2.1 nodejs简介 4 2.2 express框架介绍 6 2.4 MySQL数据库 4 第3章 系统分析 5 3.1 需求分析 5 3.2 系统可行性分析 5 3.2.1技术可行性&#xff1a;…

第三十二章 控制到 XML 模式的映射 - %ListOfObjects

文章目录 第三十二章 控制到 XML 模式的映射 - %ListOfObjects%ArrayOfObjects 第三十二章 控制到 XML 模式的映射 - %ListOfObjects 本部分显示了从支持 XML 的类生成的 XML架构的一部分&#xff0c;该类包含定义为 %ListOfObjects 的属性。例如&#xff0c;考虑以下属性定义…

『App自动化测试之Appium基础篇』| Desired Capabilities详解与使用

App自动化测试之Appium基础篇』| Desired Capabilities详解与使用 1 关于appium driver2 安装appium driver3 安装Appium Python Client4 安装测试对象5 获取测试对象信息5.1 使用dumpsys5.2 使用AndroidKiller5.3 使用aapt 6 Capabilities详解6.1 Capabilities介绍6.2 automat…

CentOS使用kkFileView实现在线预览word excel pdf等

一、环境安装 1、安装LibreOffice wget https://downloadarchive.documentfoundation.org/libreoffice/old/7.5.3.2/rpm/x86_64/LibreOffice_7.5.3.2_Linux_x86-64_rpm.tar.gz # 解压缩 tar -zxf LibreOffice_7.5.3.2_Linux_x86-64_rpm.tar cd LibreOffice_7.5.3.2_Linux_x86…

复旦微在线调试DDR

模式介绍 Jtag模式 Jtag模式用于在线调试&#xff0c;烧写&#xff0c;红色箭头所示拨码开关&#xff0c;拨上为jtag模式 Qspi模式 Qspi模式用于独立运行&#xff0c;红色箭头所示拨码开关&#xff0c;拨下为Qspi模式 级联模式 当PL侧代码不用修改时可以用级联模式&#xff0c…

ROS2 LifecycleNode讲解及实例

LifecycleNode讲解及实例 文章目录 前言LifecycleNode是什么背景生命周期状态定义UnconfiguredInactiveActiveFinalized 转换逻辑图示标准接口 代码实现&测试代码测试 总结 前言 本文用来记录什么是LifecycleNode&#xff0c;做背景介绍及基本原理的介绍及分析如何使用。1…

【大数据】Doris 架构

Doris 架构 Doris 的架构很简洁&#xff0c;只设 FE&#xff08;Frontend&#xff09;、BE&#xff08;Backend&#xff09;两种角色、两个进程&#xff0c;不依赖于外部组件&#xff0c;方便部署和运维&#xff0c;FE、BE 都可线性扩展。 ✅ Frontend&#xff08;FE&#xff0…

十六 动手学深度学习v2计算机视觉 ——样式迁移

文章目录 基于CNN的样式迁移 基于CNN的样式迁移 我们通过前向传播&#xff08;实线箭头方向&#xff09;计算风格迁移的损失函数&#xff0c;并通过反向传播&#xff08;虚线箭头方向&#xff09;迭代模型参数&#xff0c;即不断更新合成图像。 风格迁移常用的损失函数由3部分组…