使用pagehelper插件进行分页查询

本文介绍了在SpringBoot项目中如何导入mybatis-spring-boot-starter和pagehelper-spring-boot-starter依赖,配置Druid数据源,以及如何使用PageHelper进行分页查询,包括Employee实体类、Mapper接口、XML映射文件和Service实现的详细步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、导入mybatis和pagehelper坐标

<dependency>
       <groupId>org.mybatis.spring.boot</groupId>
       <artifactId>mybatis-spring-boot-starter</artifactId>
       <version>2.2.0</version>
</dependency>
<dependency>
      <groupId>com.github.pagehelper</groupId>
      <artifactId>pagehelper-spring-boot-starter</artifactId>
      <version>1.3.0</version>
</dependency>

二、配置数据库

spring:
  main:
    allow-circular-references: true
  datasource:
    druid:
      driver-class-name: com.mysql.cj.jdbc.Driver
      url: jdbc:mysql://localhost:3306/x_take_out?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true
      username: root
      password: root

三、编写代码实现分页

EmployeePageQueryDTO.java
@Data
public class EmployeePageQueryDTO implements Serializable {

    //员工姓名
    private String name;

    //页码
    private int page;

    //每页显示记录数
    private int pageSize;

}
EmployeeMapper.java
@Mapper
public interface EmployeeMapper {
    /**
     * 分页查询
     *
     * @param employeePageQueryDTO
     * @return
     */
    Page<Employee> pageQuery(EmployeePageQueryDTO employeePageQueryDTO);
}
EmployeeMapper.xml
    <select id="pageQuery" resultType="top.weiyuexin.x.entity.Employee">
        select *
        from employee
        <where>
            <if test="name != null and name != ''">
                and name like concat('%',#{name},'%')
            </if>
        </where>
        order by create_time desc
    </select>
EmployeeServiceImpl.java
/**
     * 员工分页查询
     *
     * @param employeePageQueryDTO
     * @return
     */
    @Override
    public PageResult pageQuery(EmployeePageQueryDTO employeePageQueryDTO) {
        // select * from employee limit 0,10
        // 使用PageHelper插件进行分页查询
        PageHelper.startPage(employeePageQueryDTO.getPage(), employeePageQueryDTO.getPageSize());

        Page<Employee> page = employeeMapper.pageQuery(employeePageQueryDTO);

        return new PageResult(page.getTotal(), page.getResult());
    }

四、接口测试

在这里插入图片描述

### 使用 MyBatis Plus 和 PageHelper 实现分页查询 #### 导入依赖 为了在项目中使用 `PageHelper` 进行分页操作,需先添加 Maven 依赖: ```xml <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper-spring-boot-starter</artifactId> <version>1.4.2</version> </dependency> ``` 该版本号可能随时间更新,请查阅最新文档确认[^3]。 #### 配置文件设置 接着,在项目的 `application.yml` 或者 `application.properties` 文件里配置 `PageHelper` 的属性: 对于 YAML 格式的配置如下所示: ```yaml pagehelper: helperDialect: mysql reasonable: true supportMethodsArguments: true params: count=countSql ``` 上述配置适用于 MySQL 数据库环境下的分页需求。 #### 编写服务层逻辑 编写业务逻辑时,可以在 Service 层调用 `PageHelper.startPage()` 方法来启动分页功能。这里给出一个简单的例子说明如何结合 MyBatis Plus 完成分页查询的功能: ```java import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import org.springframework.stereotype.Service; @Service public class UserService { @Autowired private UserMapper userMapper; // 假设有一个UserMapper接口用于映射数据库表users public IPage<User> getUsersByPage(int pageNum, int pageSize){ // 开启分页模式并指定当前页数以及每页显示记录条数 PageHelper.startPage(pageNum, pageSize); QueryWrapper<User> queryWrapper = new QueryWrapper<>(); List<User> userList = userMapper.selectList(queryWrapper); PageInfo<User> pageInfo = new PageInfo<>(userList); return (IPage<User>) pageInfo; } } ``` 注意:这段代码假设已经存在了一个名为 `UserMapper` 接口,并且它继承自 `BaseMapper<T>` 接口,从而可以访问 CRUD API。 #### 控制器层处理请求 最后一步是在控制器中接收前端传来的参数(比如第几页、每页多少项),并将这些参数传递给服务层完成实际的数据获取工作: ```java @RestController @RequestMapping("/api/users") public class UserController { @Autowired private UserService userService; @GetMapping("/list") public Result<IPage<User>> getUserList(@RequestParam Integer page, @RequestParam Integer limit) { try{ IPage<User> users = this.userService.getUsersByPage(page, limit); return Result.success(users); }catch(Exception e){ log.error(e.getMessage(),e); return Result.failure(); } } } ``` 通过以上步骤就可以成功集成 `MyBatis Plus` 和 `PageHelper` 来实现高效的分页查询了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值