Java Web Spring Boot 分页查询插件-PageHelper

Java Web Spring Boot 分页查询插件详解

在Java Web开发中,分页查询是一个常见的需求,尤其是在处理大量数据时。Spring Boot结合MyBatis的分页插件PageHelper,可以极大地简化分页查询的实现过程。下面我们将详细讲解如何在Spring Boot中使用PageHelper进行分页查询。

1. PageHelper简介

PageHelper是MyBatis的一款功能强大、方便易用的分页插件,支持任何形式的单表、多表的分页查询。它能够自动拦截SQL查询,并在查询前添加分页参数,查询后返回分页结果。

2. 引入PageHelper依赖

首先,在pom.xml文件中引入PageHelper的依赖:

<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper-spring-boot-starter</artifactId>
    <version>1.4.2</version>
</dependency>
3. 配置PageHelper

在Spring Boot的配置文件application.properties中,可以对PageHelper进行一些基本配置:

# 分页插件配置
pagehelper.helperDialect=mysql
pagehelper.reasonable=true
pagehelper.supportMethodsArguments=true
pagehelper.params=count=countSql
4. 定义Mapper接口

在Mapper接口中,我们只需要定义一个方法来执行查询,无需手动处理分页逻辑:

@Mapper
public interface EmpMapper {
    @Select("select * from emp")
    List<Emp> list();
}
5. 定义Service类

在Service类中,调用Mapper的方法之前设置分页参数,在调用Mapper方法执行查询之后,解析分页结果,并将结果封装到PageBean对象中返回:

@Service
public class EmpServiceImpl implements EmpService {

    @Autowired
    private EmpMapper empMapper;

    @Override
    public PageBean page(Integer page, Integer pageSize) {
        // 设置分页参数
        PageHelper.startPage(page, pageSize);
        // 执行分页查询
        List<Emp> empList = empMapper.list();
        // 获取分页结果
        Page<Emp> p = (Page<Emp>) empList;
        // 封装PageBean
        PageBean pageBean = new PageBean(p.getTotal(), p.getResult());
        return pageBean;
    }
}
6. 定义Controller类

在Controller类中,定义一个接口来处理分页查询请求:

@RestController
public class EmpController {

    @Autowired
    private EmpService empService;

    @GetMapping("/emps")
    public PageBean getEmps(@RequestParam(defaultValue = "1") Integer page,
                            @RequestParam(defaultValue = "10") Integer pageSize) {
        return empService.page(page, pageSize);
    }
}
7. PageBean类

定义一个PageBean类来封装分页查询的结果:

public class PageBean {
    private long total; // 总记录数
    private List<?> rows; // 当前页数据

    public PageBean(long total, List<?> rows) {
        this.total = total;
        this.rows = rows;
    }

    // getters and setters
}
8. 测试分页查询

功能开发完成后,我们重启项目工程,打开Postman,发起GET请求,访问:http://localhost:8080/emps?page=1&pageSize=5,可以看到返回的分页查询结果。

9. 分页插件的工作原理

PageHelper分页插件的工作原理如下:

  1. 拦截SQL查询:PageHelper会拦截MyBatis的SQL查询请求。
  2. 获取SQL语句:获取到要执行的SQL语句,例如:select * from emp
  3. 改造SQL语句:将SQL语句中的字段列表变为count(*),执行select count(*) from emp获取总记录数。
  4. 添加分页参数:对原SQL语句进行改造,在末尾添加limit ? , ?,例如:select * from emp limit ? , ?
  5. 执行分页查询:执行改造后的SQL语句,返回分页查询结果。

通过以上步骤,我们实现了Spring Boot中使用PageHelper进行分页查询的功能。PageHelper分页插件极大地简化了分页查询的实现过程,提高了开发效率。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

需要重新演唱

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值