目录
1.相关介绍
PageHelper 是一个开源的 MyBatis 分页插件,可以帮助开发者方便地实现数据库分页查询功能。它通过拦截 Mapper 方法的调用,自动在 SQL 语句中添加分页相关的信息,从而实现数据库查询结果的分页处理。
使用 PageHelper 可以简化代码编写,避免手动编写复杂的分页逻辑,提高开发效率并降低出错风险。同时,PageHelper 的社区活跃,持续更新和维护,可以获取到及时的技术支持和问题解决方案。
PageHelper 提供了丰富的功能和配置选项,包括但不限于:
(1)支持多种数据库方言,如 MySQL、Oracle、SQL Server 等。
(2)可以自定义分页查询的各种参数,如页码、每页数量、排序等。
(3)提供了丰富的分页信息,如总记录数、总页数、当前页码等。
(4)支持物理分页和逻辑分页两种方式,适用于不同的场景需求。
(5)可以通过注解或配置文件的方式来配置分页插件。
2.使用方式
1.引入 PageHelper 依赖
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.5</version>
</dependency>
2.编写Mapper接口和xml映射
@Mapper
public interface UserMapper{
List<User> getAllByPage(Integer start,Integer size);
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zhan.zhan215.Dao.UserMapper">
<select id="getAllByPage" resultType="com.zhan.zhan215.Entity.User">
select *
from user
</select>
</mapper>
3.编写Service(此处直接写Impl,接口省略)
在 Service 层中使用 PageHelper.startPage() 方法进行分页设置,然后调用 Mapper 接口方法进行查询,最后将查询结果封装成 PageInfo 对象返回给前端页面:
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.zhan.zhan215.Dao.UserMapper;
import com.zhan.zhan215.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> getAllByPage(Integer page, Integer size){
PageHelper.startPage(page,size);
List<User> allByPage = userMapper.getAllByPage(page, size);
return new PageInfo<>(allByPage);
}
}
4.控制层Controller
在控制器层接收前端传入的分页参数,并调用 Service 层方法进行分页查询。
@RestController
@RequestMapping("/user")
public class UserController {
@Resource
private UserService userService;
@GetMapping("/getAllByPage")
public ResponseBean getAllByPage(@RequestParam(defaultValue = "1") Integer page, @RequestParam(defaultValue = "2") Integer size) {
return ResponseBean.success(userService.getAllByPage(page, size));
}
}