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.properties
或application.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的分页功能 ,详细的使用可以参考文档如何使用分页插件
原文地址:https://blog.csdn.net/qq_64734490/article/details/143920459
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!