Springboot整合mybatis-plus使用pageHelper进行分页(使用步骤)

 更新时间:2024年11月23日 09:50:14   作者:ueanaIU潇潇子  
PageHelper是一个MyBatis分页插件,可以方便地实现数据库查询结果的分页功能,在Maven或Gradle项目中引入依赖,并在配置文件中进行配置,本文给大家介绍Springboot整合mybatis-plus使用pageHelper进行分页,感兴趣的朋友跟随小编一起看看吧

PageHelper 使用步骤全解析 

在进行 Web 应用开发时,经常会涉及到数据库数据的分页展示。PageHelper 是一个非常实用的 MyBatis 分页插件,它能够方便地实现数据库查询结果的分页功能,极大地提高了开发效率。以下将简单介绍 PageHelper 的使用步骤。 

一、引入依赖

Maven 项目

如果你的项目是基于 Maven 构建的,需要在项目的pom.xml文件中添加 PageHelper 的依赖项。 

<!--pagehelper分页插件-->
<dependency>
  <groupId>com.github.pagehelper</groupId>
     <artifactId>pagehelper-spring-boot-starter</artifactId>
     <version>1.4.0</version>
</dependency>

Gradle 项目 

对于 Gradle 项目,在build.gradle文件中添加以下依赖:

implementation 'com.github.pagehelper:pagehelper-spring-boot-starter:1.4.0'

二、配置 PageHelper

  • 如果是 Spring Boot 项目,在application.propertiesapplication.yml文件中进行配置。以application.yml为例:
pagehelper:
  helper-dialect: mysql # 指定数据库方言,这里以MySQL为例
  reasonable: true # 分页合理化,如果pageNum<1会查询第一页,如果pageNum>pages会查询最后一页
  support-methods-arguments: true # 支持通过Mapper接口参数传递分页参数
  params: count=countSql # 用于从对象中根据属性名取值,这里配置count的SQL

这些参数的详细解释如下:

  • helper-dialect: 指定分页插件的数据库方言。PageHelper会自动检测当前的数据库链接,自动选择合适的分页方式。如果你使用的是MySQL,可以明确指定为mysql
  • reasonable: 是否启用分页合理化。如果启用,当pageNum<1时,会自动查询第一页的数据,当pageNum>pages时,自动查询最后一页数据;不启用的情况下,以上两种情况都会返回空数据。
  • support-methods-arguments: 是否支持通过Mapper接口参数来传递分页参数,默认值false。设置为true时,PageHelper会从查询方法的参数值中自动根据配置的字段取值,进行分页。
  • params: 用于从对象中根据属性名取值,可以配置pageNum, pageSize, count, pageSizeZero, reasonable等参数。这里的count=countSql表示在执行分页查询时,会使用countSql作为计算总数的SQL。

 三、在代码中使用 PageHelper

1.简单分页查询

假设我们有一个用户表(user),要查询并分页展示用户信息。首先,在对应的 Mapper 接口中定义查询方法:

import com.example.entity.User;
import java.util.List;
public interface UserMapper {
    @Select("SELECT * FROM user")
    List<User> selectAllUsers();
}

然后,在 Service 层或调用 Mapper 的地方使用 PageHelper 进行分页查询,示例代码如下:

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.example.mapper.UserMapper;
import com.example.entity.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class UserService {
    @Autowired
    private UserMapper userMapper;
    public PageInfo<User> getUserList(int pageNum, int pageSize) {
        // 设置分页参数,pageNum为当前页码,pageSize为每页显示的记录数
        PageHelper.startPage(pageNum, pageSize);
        // 执行查询
        List<User> userList = userMapper.selectAllUsers();
        // 使用PageInfo对查询结果进行包装,返回包含分页信息的对象
        return new PageInfo<>(userList);
    }
}

在上述代码中,PageHelper.startPage(pageNum, pageSize)方法用于设置分页参数,告诉 PageHelper 要查询第几页以及每页显示多少条记录。然后执行查询操作,PageHelper 会自动对查询语句进行分页处理,最后将查询结果包装成PageInfo对象返回。PageInfo对象包含了分页相关的各种信息,如总记录数、总页数、当前页码、每页记录数等,方便在前端进行分页展示和相关逻辑处理。

 2.带条件的分页查询

 如果查询需要带条件,例如根据用户姓名进行模糊查询并分页。首先在 Mapper 接口中定义带条件的查询方法:

import com.example.entity.User;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import java.util.List;
@Mapper
public interface UserMapper {
    @Select("SELECT * FROM user WHERE user_name LIKE #{name}")
    List<User> selectUsersByName(@Param("name") String name);
}

在 Service 层实现带条件的分页查询,代码如下:

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.example.mapper.UserMapper;
import com.example.entity.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class UserService {
    @Autowired
    private UserMapper userMapper;
    public PageInfo<User> getUserListByName(String name, int pageNum, int pageSize) {
        // 设置分页参数
        PageHelper.startPage(pageNum, pageSize);
        // 执行带条件的查询
        List<User> userList = userMapper.selectUsersByName("%" + name + "%");
        // 返回分页信息对象
        return new PageInfo<>(userList);
    }
}

 这样我们就能简单的使用pageHelper的分页功能 ,详细的使用可以参考文档如何使用分页插件

到此这篇关于Springboot整合mybatis-plus使用pageHelper进行分页的文章就介绍到这了,更多相关Springboot整合mybatis-plus分页内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • java中的按位与(&)用法说明

    java中的按位与(&)用法说明

    这篇文章主要介绍了java中的按位与(&)用法说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-08-08
  • Struts2中Action三种接收参数形式与简单的表单验证功能

    Struts2中Action三种接收参数形式与简单的表单验证功能

    本文以登录验证为例,进行代码展示,下面给大家详细介绍Struts2中Action三种接收参数形式与简单的表单验证功能,需要的朋友参考下
    2017-03-03
  • 详解Java的位运算

    详解Java的位运算

    这篇文章主要介绍了详解Java的位运算,程序中的所有数在计算机内存中都是以二进制的形式储存的。位运算就是直接对整数在内存中的二进制位进行操作,需要的朋友可以参考下
    2023-04-04
  • java 中的HashMap的底层实现和元素添加流程

    java 中的HashMap的底层实现和元素添加流程

    这篇文章主要介绍了java 中的HashMap的底层实现和元素添加流程,HashMap 是使用频率最高的数据类型之一,同时也是面试必问的问题之一,尤其是它的底层实现原理,下文更多详细内容,需要的小伙伴可以参考一下
    2022-05-05
  • Java程序单实例运行的简单实现

    Java程序单实例运行的简单实现

    这篇文章主要介绍了Java程序单实例运行的简单实现方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-08-08
  • Java中使用正则表达式的一个简单例子及常用正则分享

    Java中使用正则表达式的一个简单例子及常用正则分享

    这篇文章主要介绍了Java中使用正则表达式的一个简单例子及常用正则分享,本文用一个验证Email的例子讲解JAVA中如何使用正则,并罗列了一些常用的正则表达式,需要的朋友可以参考下
    2015-06-06
  • java &与&&的区别及实例

    java &与&&的区别及实例

    这篇文章主要介绍了java &与&&的区别的相关资料,并附简单实例,帮助大家学习理解这部分知识,需要的朋友可以参考下
    2016-10-10
  • java封装及四种权限修饰符详解

    java封装及四种权限修饰符详解

    这篇文章主要介绍了java封装及四种权限修饰符详解,对属性进行封装,使用户不能直接输入数据,我们需要避免用户再使用"对象.属性"的方式对属性进行赋值
    2022-08-08
  • Java线程操作的常见方法【线程名称获取、设置、线程启动判断等】

    Java线程操作的常见方法【线程名称获取、设置、线程启动判断等】

    这篇文章主要介绍了Java线程操作的常见方法,结合实例形式总结分析了java线程的创建、线程名称的获取、设置以及线程启动的判断等相关操作实现技巧,需要的朋友可以参考下
    2019-10-10
  • JAVA Springboot配置i18n国际化语言详细步骤

    JAVA Springboot配置i18n国际化语言详细步骤

    国际化(Internationalization,缩写为i18n)是指根据来展示不同的内容,使应用程序能够适应不同的语言和文化习惯,下面这篇文章主要给大家介绍了关于JAVA Springboot配置i18n国际化语言的详细步骤,需要的朋友可以参考下
    2024-08-08

最新评论