一招学会—Spring Boot使用PageHelper进行分页

简介: 一招学会—Spring Boot使用PageHelper进行分页

@[toc]


一、简介:

pagehelper 分页插件,pagehelper 是一个强大实用的 MyBatis 分页插件,可以帮助我们快速的实现MyBatis分页功能,而且pagehelper有个优点是,分页和Mapper.xml完全解耦,并以插件的形式实现,对Mybatis执行的流程进行了强化,这有效的避免了我们需要直接写分页SQL语句来实现分页功能。在Dao层并不需要写分页SQL,分页插件会拦截查询请求,并读取前台传来的分页查询参数重新生成分页查询语句。

二、案例代码

1、pom.xml

首先,我们需要在 pom.xml 文件中添加分页插件依赖包。

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

2、application.properties

然后在 application.properties配置文件中添加分页插件有关的配置。

#分页助手
pagehelper.helper-dialect=mysql
pagehelper.reasonable=true
pagehelper.support-methods-arguments=true
pagehelper.params=count=countSql

3、WordSelectController.java

在控制器SysUserController中添加分页查询方法,并调用服务层的分页查询方法。

    //分页查询
    @RequestMapping(value = "/findPage")
    public Object findPage(@RequestBody Map<String,Object> map) {
        //起始索引:
        Integer pageNum = Integer.parseInt(params.get("pageNum").toString());
        //查询的条数
        Integer pageSize = Integer.parseInt(params.get("pageSize").toString());
        //调用server层进行分页查询
        return findPageResult = wordSelectService.findPage(pageNum, pageSize);
    }

4、WordSelectServiceImpl.java

服务层通过调用DAO层代码完成分页查询,这里统一封装分页查询的请求和结果类;

@Override
    public PageResult findPage(int pageNum,int pageSize) {
//        1、分页从数据库中查询
        PageHelper.startPage(pageNum, pageSize);
        List<English> sysMenus = englishDao.selectPage();
        logger.info("查询数据库的返回值为====="+sysMenus.toString());
//        2、对返回值进行判断
        if (sysMenus.size()==0){
            return null;
        }
//        3、对查询的结果进行封装
        PageInfo<English> englishPageInfo = new PageInfo<>(sysMenus);
        PageResult pageResult = PageUtils.getPageResult(englishPageInfo);

        return pageResult;
    }

5、EnglishDao

在 Dao 层添加一个分页查找方法;

//    分页查询
    List<English> selectPage( );

6、EnglishDao.xml

然后在 SysUserMapper.xml 中加入selectPage的实现,这是一个普通的查找全部记录的查询语句,并不需要写分页SQL,分页插件会拦截查询请求,并读取前台传来的分页查询参数重新生成分页查询语句。

  <!--分页查询-->
  <select id="selectPage" resultMap="BaseResultMap">
    select
    <include refid="Base_Column_List" />
    from english
  </select>

7、PageUtils.java

分页查询请求封装类;

import com.github.pagehelper.PageInfo;
import com.lydms.pojo.PageResult;

public class PageUtils {
     //将分页信息封装到统一的接口
    public static PageResult getPageResult(PageInfo<?> pageInfo) {
        PageResult pageResult = new PageResult();
        pageResult.setPageNum(pageInfo.getPageNum());
        pageResult.setPageSize(pageInfo.getPageSize());
        pageResult.setTotalSize(pageInfo.getTotal());
        pageResult.setTotalPages(pageInfo.getPages());
        pageResult.setContent(pageInfo.getList());
        return pageResult;
    }
}

8、PageResult.java

分页查询结果封装类。

public class PageResult {
    /**
     * 当前页码
     */
    private int pageNum;
    /**
     * 每页数量
     */
    private int pageSize;
    /**
     * 记录总数
     */
    private long totalSize;
    /**
     * 页码总数
     */
    private int totalPages;
    /**
     * 数据模型
     */
    private List<?> content;
    public int getPageNum() {
        return pageNum;
    }
    public void setPageNum(int pageNum) {
        this.pageNum = pageNum;
    }
    public int getPageSize() {
        return pageSize;
    }
    public void setPageSize(int pageSize) {
        this.pageSize = pageSize;
    }
    public long getTotalSize() {
        return totalSize;
    }
    public void setTotalSize(long totalSize) {
        this.totalSize = totalSize;
    }
    public int getTotalPages() {
        return totalPages;
    }
    public void setTotalPages(int totalPages) {
        this.totalPages = totalPages;
    }
    public List<?> getContent() {
        return content;
    }
    public void setContent(List<?> content) {
        this.content = content;
    }
}

三、postman调用测试

postman调用的参数

http://localhost:80/select/findPage
{
"pageNum":"2",
"pageSize":"2"
}

postman返回值:

{
    "status": 200,
    "errmsg": "成功",
    "data": {
        "pageNum": 2,
        "pageSize": 2,
        "totalSize": 102,
        "totalPages": 51,
        "content": [
            {
                "englishid": 3,
                "english": "request",
                "chinese": "请求",
                "remark": ""
            },
            {
                "englishid": 4,
                "english": "apple",
                "chinese": "苹果",
                "remark": ""
            }
        ]
    }
}
目录
相关文章
|
8月前
|
SQL 前端开发 Java
深入理解 Spring Boot 项目中的分页与排序功能
本文深入讲解了在Spring Boot项目中实现分页与排序功能的完整流程。通过实际案例,从Service层接口设计到Mapper层SQL动态生成,再到Controller层参数传递及前端页面交互,逐一剖析每个环节的核心逻辑与实现细节。重点包括分页计算、排序参数校验、动态SQL处理以及前后端联动,确保数据展示高效且安全。适合希望掌握分页排序实现原理的开发者参考学习。
567 4
|
11月前
|
XML Java 应用服务中间件
Spring Boot 两种部署到服务器的方式
本文介绍了Spring Boot项目的两种部署方式:jar包和war包。Jar包方式使用内置Tomcat,只需配置JDK 1.8及以上环境,通过`nohup java -jar`命令后台运行,并开放服务器端口即可访问。War包则需将项目打包后放入外部Tomcat的webapps目录,修改启动类继承`SpringBootServletInitializer`并调整pom.xml中的打包类型为war,最后启动Tomcat访问应用。两者各有优劣,jar包更简单便捷,而war包适合传统部署场景。需要注意的是,war包部署时,内置Tomcat的端口配置不会生效。
2755 17
Spring Boot 两种部署到服务器的方式
|
9月前
|
Java 数据库 微服务
微服务——SpringBoot使用归纳——Spring Boot中的项目属性配置——指定项目配置文件
在实际项目中,开发环境和生产环境的配置往往不同。为简化配置切换,可通过创建 `application-dev.yml` 和 `application-pro.yml` 分别管理开发与生产环境配置,如设置不同端口(8001/8002)。在 `application.yml` 中使用 `spring.profiles.active` 指定加载的配置文件,实现环境快速切换。本节还介绍了通过配置类读取参数的方法,适用于微服务场景,提升代码可维护性。课程源码可从 [Gitee](https://gitee.com/eson15/springboot_study) 下载。
395 0
|
SQL JSON Java
mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块
这篇文章介绍了如何在Spring Boot项目中整合MyBatis和PageHelper进行分页操作,并且集成Swagger2来生成API文档,同时定义了统一的数据返回格式和请求模块。
579 1
mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块
|
前端开发 Java Maven
深入解析:如何用 Spring Boot 实现分页和排序
深入解析:如何用 Spring Boot 实现分页和排序
1032 2
|
存储 运维 安全
Spring运维之boot项目多环境(yaml 多文件 proerties)及分组管理与开发控制
通过以上措施,可以保证Spring Boot项目的配置管理在专业水准上,并且易于维护和管理,符合搜索引擎收录标准。
796 2
|
缓存 NoSQL Java
Springboot自定义注解+aop实现redis自动清除缓存功能
通过上述步骤,我们不仅实现了一个高度灵活的缓存管理机制,还保证了代码的整洁与可维护性。自定义注解与AOP的结合,让缓存清除逻辑与业务逻辑分离,便于未来的扩展和修改。这种设计模式非常适合需要频繁更新缓存的应用场景,大大提高了开发效率和系统的响应速度。
530 2
springboot整合mybatis-plus及mybatis-plus分页插件的使用
这篇文章介绍了如何在Spring Boot项目中整合MyBatis-Plus及其分页插件,包括依赖引入、配置文件编写、SQL表创建、Mapper层、Service层、Controller层的创建,以及分页插件的使用和数据展示HTML页面的编写。
springboot整合mybatis-plus及mybatis-plus分页插件的使用
|
Java Spring 开发框架
Spring Boot中的分页与排序实现
Spring Boot中的分页与排序实现
|
2月前
|
JavaScript Java 关系型数据库
基于springboot的项目管理系统
本文探讨项目管理系统在现代企业中的应用与实现,分析其研究背景、意义及现状,阐述基于SSM、Java、MySQL和Vue等技术构建系统的关键方法,展现其在提升管理效率、协同水平与风险管控方面的价值。

热门文章

最新文章