当前位置: 首页 > news >正文

MyBatis-Plus 分页实战

在这里插入图片描述

01 Spring Boot集成MyBatis-Plus

数据准备:构建基础环境
user 表结构:

DROP TABLE IF EXISTS `user1`;
CREATE TABLE `user1` (`id` intNOT NULL AUTO_INCREMENT COMMENT '用户id',`name` varchar(64) DEFAULTNULL COMMENT '用户名称',`phone` varchar(64) DEFAULTNULL COMMENT '用户电话',`age` intDEFAULTNULL COMMENT '用户年龄',`address` varchar(128) DEFAULTNULL COMMENT '用户地址',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=11DEFAULT CHARSET=utf8 COMMENT='用户表';

初始数据插入:

insert into `user1`(`id`,`name`,`phone`,`age`,`address`) values
(1,'孙一','13800138002',27,'西安市雁塔区'),
(2,'黄二','13900139002',31,'青岛市市南区'),
(3,'张三','13800138000',30,'北京市海淀区'),
(4,'李四','13900139000',25,'上海市浦东新区'),
(5,'王五','13600136000',35,'广州市天河区'),
(6,'赵六','13700137000',28,'深圳市南山区'),
(7,'陈七','13800138001',22,'杭州市西湖区'),
(8,'周八','13900139001',32,'南京市鼓楼区'),
(9,'吴九','13600136001',40,'成都市武侯区'),
(10,'郑十','13700137001',33,'武汉市江汉区');

环境配置:搭建高效开发框架

POM依赖引入

<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.4.2</version>
</dependency>

YML配置优化

spring:datasource:username:rootpassword:123456driver-class-name:com.mysql.cj.jdbc.Driverurl:jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8druid:initialSize:5minIdle:10maxActive:20maxWait:60000mybatis-plus:
mapper-locations:classpath*:mapper/*Mapper.xml
typeAliasesPackage:org.example.pojo
global-config:db-config:id-type:auto
configuration:call-setters-on-nulls:truemap-underscore-to-camel-case:trueobject-wrapper-factory: com.baomidou.mybatisplus.extension.MybatisMapWrapperFactory

MyBatisPlusConfig增强配置

@Configuration
public class MybatisPlusConfig {@Beanpublic MybatisPlusInterceptor mybatisPlusInterceptor() {MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();// 添加分页拦截器PaginationInnerInterceptor paginationInnerInterceptor = new PaginationInnerInterceptor(DbType.MYSQL);paginationInnerInterceptor.setOverflow(false); // 禁止分页溢出paginationInnerInterceptor.setMaxLimit(1000L); // 设置最大分页限制interceptor.addInnerInterceptor(paginationInnerInterceptor);return interceptor;}
}

注解:

  1. 通过@Configuration注解标识配置类
  2. 使用MybatisPlusInterceptor整合分页拦截器
  3. 配置分页核心参数,保障系统稳定性和性能

02 实现 分页查询

UserServiceImpl实现

@Service
publicclassUserServiceImplextendsServiceImpl<UserMapper, User> implementsIUserService {@Autowiredprivate UserMapper userMapper;/*** 获取用户分页列表* @return 分页结果集*/@Overridepublic IPage<User> getUserPage() {// 创建分页对象,参数:当前页,每页大小Page<User> page = newPage<>(1, 5);// 执行分页查询,自动计算总数和数据列表return userMapper.selectPage(page, newLambdaQueryWrapper<>());}/*** 获取用户分页Map集合* @return 分页结果集*/@Overridepublic IPage<Map<String, Object>> getUserPageMap() {Page<User> page = newPage<>(1, 5);LambdaQueryWrapper<User> queryWrapper = newLambdaQueryWrapper<>();// 选择特定字段并排序queryWrapper.select(User::getName, User::getPhone).orderByDesc(User::getId);// 返回Map形式的分页结果return userMapper.selectMapsPage(page, queryWrapper);}
}

注解:

  1. 继承ServiceImpl泛型实现,复用MyBatis-Plus通用逻辑
  2. 使用LambdaQueryWrapper构建查询条件,提升代码可读性
  3. selectPage与selectMapsPage方法自动完成分页查询与封装

分页结果核心参数说明
• records:当前页数据记录列表
• total:总记录数
• size:每页显示记录数
• current:当前页码
• pages:总页数

http://www.dtcms.com/a/292904.html

相关文章:

  • 目前主流的AI深度学习框架对Windows和Linux的支持哪个更好
  • 单细胞转录组学+空间转录组的整合及思路
  • 一个不起眼的问题,导致插件加载失败
  • python中 tqdm ,itertuples 是什么
  • 学习软件测试的第十九天
  • ​Eyeriss 架构中的访存行为解析(腾讯元宝)
  • Java学习----Redis集群
  • SHAP的升级版:可解释性框架Alibi的相关介绍(一)
  • L1与L2正则化:核心差异全解析
  • RabbitMQ03——面试题
  • DOM/事件高级
  • haprox七层代理
  • 医院如何实现节能降耗?
  • <另一种思维:语言模型如何展现人类的时间认知>读后总结
  • 【上市公司变量测量】Python+FactSet Revere全球供应链数据库,测度供应链断裂与重构变量——丁浩员等(2024)《经济研究》复现
  • Day28| 122.买卖股票的最佳时机 II、55. 跳跃游戏、45.跳跃游戏 II、1005.K次取反后最大化的数组和
  • Spring AI Alibaba + JManus:从架构原理到生产落地的全栈实践——一篇面向 Java 架构师的 20 分钟深度阅读
  • MSTP实验
  • 深入理解 Qt 中的 QImage 与 QPixmap:底层机制、差异、优化策略全解析
  • 集训Demo5
  • 代码检测SonarQube+Git安装和规范
  • 从FDTD仿真到光学神经网络:机器学习在光子器件设计中的前沿应用工坊
  • Matlab学习笔记:界面使用
  • 【数据结构初阶】--栈和队列(二)
  • CanOpen--SDO 数据帧分析
  • vscode不识别vsix结尾的插件怎么解决?
  • sysbench对linux服务器上mysql8.0版本性能压测
  • Thinkphp8使用Jwt生成与验证Token
  • 问题记录:地图数据状态没有实时更新问题
  • 前端--bom、JQuery