一招学会—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": ""
            }
        ]
    }
}
目录
相关文章
|
2月前
|
前端开发 Java Maven
深入解析:如何用 Spring Boot 实现分页和排序
深入解析:如何用 Spring Boot 实现分页和排序
64 2
|
2月前
|
存储 运维 安全
Spring运维之boot项目多环境(yaml 多文件 proerties)及分组管理与开发控制
通过以上措施,可以保证Spring Boot项目的配置管理在专业水准上,并且易于维护和管理,符合搜索引擎收录标准。
52 2
|
3月前
|
SQL JSON Java
mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块
这篇文章介绍了如何在Spring Boot项目中整合MyBatis和PageHelper进行分页操作,并且集成Swagger2来生成API文档,同时定义了统一的数据返回格式和请求模块。
94 1
mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块
|
3月前
|
缓存 NoSQL Java
Springboot自定义注解+aop实现redis自动清除缓存功能
通过上述步骤,我们不仅实现了一个高度灵活的缓存管理机制,还保证了代码的整洁与可维护性。自定义注解与AOP的结合,让缓存清除逻辑与业务逻辑分离,便于未来的扩展和修改。这种设计模式非常适合需要频繁更新缓存的应用场景,大大提高了开发效率和系统的响应速度。
91 2
|
4月前
|
SQL XML Java
springboot整合mybatis-plus及mybatis-plus分页插件的使用
这篇文章介绍了如何在Spring Boot项目中整合MyBatis-Plus及其分页插件,包括依赖引入、配置文件编写、SQL表创建、Mapper层、Service层、Controller层的创建,以及分页插件的使用和数据展示HTML页面的编写。
springboot整合mybatis-plus及mybatis-plus分页插件的使用
|
7月前
|
Java Maven
springboot项目打jar包后,如何部署到服务器
springboot项目打jar包后,如何部署到服务器
457 1
|
6月前
|
Java Spring 开发框架
Spring Boot中的分页与排序实现
Spring Boot中的分页与排序实现
|
7月前
springboot2.4.5使用pagehelper分页插件
springboot2.4.5使用pagehelper分页插件
190 0
|
3月前
|
JavaScript 安全 Java
如何使用 Spring Boot 和 Ant Design Pro Vue 实现动态路由和菜单功能,快速搭建前后端分离的应用框架
本文介绍了如何使用 Spring Boot 和 Ant Design Pro Vue 实现动态路由和菜单功能,快速搭建前后端分离的应用框架。首先,确保开发环境已安装必要的工具,然后创建并配置 Spring Boot 项目,包括添加依赖和配置 Spring Security。接着,创建后端 API 和前端项目,配置动态路由和菜单。最后,运行项目并分享实践心得,包括版本兼容性、安全性、性能调优等方面。
202 1
|
2月前
|
JavaScript 安全 Java
如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个具有动态路由和菜单功能的前后端分离应用。
本文介绍了如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个具有动态路由和菜单功能的前后端分离应用。首先,创建并配置 Spring Boot 项目,实现后端 API;然后,使用 Ant Design Pro Vue 创建前端项目,配置动态路由和菜单。通过具体案例,展示了如何快速搭建高效、易维护的项目框架。
132 62

热门文章

最新文章