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

后端项目开发:分页功能的实现(Mybatis+pagehelper)

分页查询是项目中的常用功能,此处我们基于Mybatis对分页查询进行处理。

引入分页依赖

<!-- pagehelper -->
<dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper-spring-boot-starter</artifactId><version>1.2.13</version>
</dependency>

1.分页请求封装

public class PageRequest {/*** 当前页码*/private int pageNum = 1;/*** 每页数量*/private int pageSize = 10;/*** 查询参数*/private Map<String, Object> params = new HashMap<>();//getter setter
}

2.分页结果封装

在http目录下,新建PageResult类,我们用此类包装分页结果。

/*** 分页数据封装类*/
@Getter
@Setter
public class PageResult {/*** 当前页码*/private int pageNum;/*** 每页数量*/private int pageSize;/*** 记录总数*/private long totalSize;/*** 页码总数*/private int totalPages;/*** 分页数据*/private List<?> content;//getter setter
}

3.分页助手封装

public class MybatisPageHelper {public static final String findPage = "findPage";/*** 分页查询, 约定查询方法名为 “findPage”* @param pageRequest 分页请求* @param mapper Dao对象,MyBatis的 Mapper* @return*/public static PageResult findPage(PageRequest pageRequest, Object mapper) {return findPage(pageRequest, mapper, findPage);}/*** 调用分页插件进行分页查询* @param pageRequest 分页请求* @param mapper Dao对象,MyBatis的 Mapper* @param queryMethodName 要分页的查询方法名* @param args 方法参数* @return*/@SuppressWarnings({ "unchecked", "rawtypes" })public static PageResult findPage(PageRequest pageRequest, Object mapper, String queryMethodName, Object... args) {// 设置分页参数int pageNum = pageRequest.getPageNum();int pageSize = pageRequest.getPageSize();PageHelper.startPage(pageNum, pageSize);// 利用反射调用查询方法Object result = ReflectionUtils.invoke(mapper, queryMethodName, args);return getPageResult(pageRequest, new PageInfo((List) result));}/*** 将分页信息封装到统一的接口* @param pageRequest* @return*/private static PageResult getPageResult(PageRequest pageRequest, PageInfo<?> pageInfo) {PageResult pageResult = new PageResult();BeanUtils.copyProperties(pageInfo,pageResult);return pageResult;}
}
http://www.lryc.cn/news/139465.html

相关文章:

  • SpringBoot集成Drools
  • React创建组件的三种方式及其区别是什么?
  • W6100-EVB-PICO进行UDP组播数据回环测试(九)
  • Qt 阴影边框
  • 前端面试:【性能优化】页面加载性能、渲染性能、资源优化
  • 从按下电源键到进入系统,CPU在干什么?
  • TypeScript初体验
  • 基于 Alpine 环境源码构建 alibaba-tengine(阿里巴巴)的 Docker 镜像
  • 政府网站定期巡检:构建高效、安全与透明的数字政务
  • C++信息学奥赛1138:将字符串中的小写字母转换成大写字母
  • leetcode1475. 商品折扣后的最终价格 【单调栈】
  • macOS M1使用TensorFlow GPU加速
  • GNU-gcc编译选项-1
  • 【DEVOPS】Jenkins使用问题 - 控制台输出乱码
  • logback-spring.xml
  • 华为OD机试之报文重排序【Java源码】
  • 回归预测 | MATLAB实现BES-ELM秃鹰搜索优化算法优化极限学习机多输入单输出回归预测(多指标,多图)
  • DPU在东数西算背景下如何赋能下一代算力基础设施 中科驭数在未来网络发展大会论道
  • 2021年12月 C/C++(四级)真题解析#中国电子学会#全国青少年软件编程等级考试
  • ArcGIS Serve Windows下用户密码变更导致Server服务无法启动问题
  • React 面试题集锦
  • xargs命令解决“Argument list too long”
  • R语言中<- 的含义
  • 知识图谱Neo4j安装到实践全过程
  • 贪心算法:简单而高效的优化策略
  • 一生一芯6——ubuntu rpm软件安装
  • Python练习 函数取列表最小数
  • 五种重要的 AI 编程语言
  • 【linux】2 make/Makefile和gitee
  • db-gpt安装指南(docker版本)