目录
1.相关介绍
2.使用方式
1.引入 PageHelper 依赖
2.编写Mapper接口和xml映射
3.编写Service(此处直接写Impl,接口省略)
4.控制层Controller
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 {@Autowiredprivate 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 {@Resourceprivate UserService userService;@GetMapping("/getAllByPage")public ResponseBean getAllByPage(@RequestParam(defaultValue = "1") Integer page, @RequestParam(defaultValue = "2") Integer size) {return ResponseBean.success(userService.getAllByPage(page, size));}}