IDEA编辑器 SpringBoot中mybatis对数据进行分页查询,使用PageHlper插件

tech2024-05-10  83

本文中因为使用项目中的代码,所以过多的无用代码

每行代码已经注释 希望能帮助大家,见谅!

在平常查询数据中,因过多数据在前端显示非常的不变,所以经常用到分页。

本文中用到分页工具类可以更详细的传给前端数据。

首先添加PageHlper依赖

<!--PageHelper查询数据分页--> <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper-spring-boot-starter</artifactId> <version>1.2.5</version> </dependency>

这里用到分页工具类

@Data注解:实现GetSet方法,需要用到 lombok ,不喜欢用的朋友可以自己生成GetSet方法。

没用过的朋友们可以在社区中搜索,我将在下一个文章中单独讲如何使用。

工具类中的属性和构造方法已经注释,很容易看懂

@Data public class PageBean<T> { // 当前页 private Integer currentPage = 1; // 每页显示的总条数 private Integer pageSize = 10; // 总条数 private Integer totalNum; // 是否有下一页 private Integer isMore; // 总页数 private Integer totalPage; // 开始索引 private Integer startIndex; // 分页结果 private List<T> items; public PageBean() { super(); } public PageBean(Integer currentPage, Integer pageSize, Integer totalNum) { super(); this.currentPage = currentPage; this.pageSize = pageSize; this.totalNum = totalNum; //总条数 + 分页条数-1 /总条数 = 总页数 Integer舍去小数 this.totalPage = (this.totalNum+this.pageSize-1)/this.pageSize; //当前页-1 * 总条数 数据开始索引 this.startIndex = (this.currentPage-1)*this.pageSize; //当前页数 >= 总条数 正则表达式 this.isMore = this.currentPage >= this.totalPage?0:1; } }

在查询数据需要用到两条sql:

简单的进行查询,具体代码需要根据需求进行。 1.查询需要数据的sql

select * from user

2.查询需要数据的总条数

select count(*) from user

两条代码不一样的地方是 一个是查询需要的数据 一个是查询条数 ,如果有条件where那么条件也是一致的。

接下来放上Service中的代码

方法中的参数

currentPage 查询的页数
pageSize 一页查询条数
userName查询数据需要的条件内容(忽视)
public PageBean<Map<Object, Object>> selectUserPage(String userName, int currentPage, int pageSize) { //设置要查询的页数以及每页的条数 PageHelper.startPage(currentPage,pageSize); //获取从数据库中查询数据 第一条sql中查询的数据 List<Map<Object,Object>> list = studyJobMapper.selectStudyJobUser(userName); //获取这些数据的总条数 第二条sql中查询的条数 int countNums = studyJobMapper.selectUserCount(userName); //实例化PageBean 把配置信息存入 PageBean<Map<Object,Object>> pageData = new PageBean<>(currentPage,pageSize,countNums); //把数据存入类中 pageData.setItems(list); //返回数据 return pageData; }

Conreoller中调用方法返回前端

在代码中使用了AjaxResult工具类,大家可以直接返回 PageBean对象或者使用自己的返回数据的工具类。

@PostMapping("/selectUserPage") public AjaxResult selectUserPage(@RequestBody Map<Object,Object> map){ //获取参数 int pageSize = (int)map.get("pageSize"); int currentPage = (int)map.get("currentPage"); String userName = (String) map.get("userName"); //接受分页完成的数据 PageBean<Map<Object,Object>> page = studyJobService.selectUserStudyJobPage(userName,currentPage,pageSize); return AjaxResult.success("查询成功",page); }

使用Postman工具查询

下面数据中的属性在PageBean工具类中已经注释大家可以仔细看看

返回的参数对前端也是很友好

因为测试加的数据不多没有实现很好的效果,大家见谅。 作者java后端小白还在实训,记录一下自己经常用到的知识,同时也分享给大家,希望对大家有帮助,在本文中出现的问题,以及不妥的地方,或者大家不理解的地方,欢迎大家在下面评论指点,谢谢大家!

最新回复(0)