Advertisement

pagehelper分页查询

阅读量:

pagehelper分页查询

该插件是MyBatis框架中提供的分页工具。它支持Oracle、Mysql、MariaDB、SQLite、Hsqldb及PostgreSQL六种主流数据库。通过调用该插件即可轻松实现分页查询。在SQL语句生成前调用startPage方法,并指定当前页码和每页显示的条数参数即可。例如,在第一次请求时调用startPage(1,20)即可表示请求第一页,并且每页将返回20条数据。

1.pom文件

引入 pagehelper pom文件

复制代码
    		<dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper-spring-boot-starter</artifactId>
         </dependency>
    
    
    xml

2.Controller

当控制层接收到来自客户端的'/page'请求时, 将前端发送过来的参数按照指定的格式转换为EmployeePageQueryDTO对象

调用service层

复制代码
       /** * 员工分页查询
     * @param employeePageQueryDTO
     * @return
     */
    @GetMapping("/page")
    @ApiOperation("员工分页查询")
    public Result<PageResult> page(EmployeePageQueryDTO employeePageQueryDTO) {
        log.info("员工分页查询,参数为: {}", employeePageQueryDTO);
        PageResult pageResult = employeeService.pageQuery(employeePageQueryDTO);
        return Result.success(pageResult);
    } 
    
    
    java
    
    
![](https://ad.itadn.com/c/weblog/blog-img/images/2025-07-13/4ZbXd5gM3ywKz72cvIWD1qhisU9x.png)

2.PageResult

封装的分页查询结果

复制代码
    /** * 封装分页查询结果
     */
    @Data
    @AllArgsConstructor
    @NoArgsConstructor
    public class PageResult implements Serializable {
    private long total; //总记录数
    private List records; //当前页数据集合
    }
    
    
    java
    
    
![](https://ad.itadn.com/c/weblog/blog-img/images/2025-07-13/GYLAq7ce0UCS41DwtXPzho3bZKud.png)

3.EmployeePageQueryDTO

封装的前台传递过来的数据

复制代码
    @Data
    public class EmployeePageQueryDTO implements Serializable {
    //员工姓名
    private String name;
    //页码
    private int page;
    //每页显示记录数
    private int pageSize;
    }
    
    
    java

4.Service

复制代码
    /** * 分页查询
     * @param employeePageQueryDTO
     * @return
     */
    PageResult pageQuery(EmployeePageQueryDTO employeePageQueryDTO);
    
    
    java

5.ServiceImpl

调用PageHelper方法进行分页查询

需要两个参数 页码,和每一页展示的数量个数

复制代码
       /** * 分页查询
     * @param employeePageQueryDTO
     * @return
     */
    public PageResult pageQuery(EmployeePageQueryDTO employeePageQueryDTO) {
        //开始分页查询
        PageHelper.startPage(employeePageQueryDTO.getPage(), employeePageQueryDTO.getPageSize());
        
        Page<Employee> page = employeeMapper.pageQuery(employeePageQueryDTO);
        long total = page.getTotal();
        List<Employee> result = page.getResult();
        return new PageResult(total, result);
    }
    
    
    java
    
    
![](https://ad.itadn.com/c/weblog/blog-img/images/2025-07-13/njcPmQdKyFrCM17fLEGuh6tHZ8s4.png)

6.Employee

员工的实体类

复制代码
    @Data
    @Builder
    @NoArgsConstructor
    @AllArgsConstructor
    public class Employee implements Serializable {
    private static final long serialVersionUID = 1L;
    private Long id;
    private String username;
    private String name;
    private String password;
    private String phone;
    private String sex;
    private String idNumber;
    private Integer status;
    //@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createTime;
    //@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime updateTime;
    private Long createUser;
    private Long updateUser;
    }
    
    
    java
    
    
![](https://ad.itadn.com/c/weblog/blog-img/images/2025-07-13/xaO4DuvZAw3jlVWPB7LT2fU9yGQr.png)

7.mapper

复制代码
       /** * 分页查询
     * @param employeePageQueryDTO
     * @return
     */
    Page<Employee> pageQuery(EmployeePageQueryDTO employeePageQueryDTO);
    
    
    java

8.mapper.xml

PageHelper会自动的补全sql代码

复制代码
    <select id="pageQuery" resultType="com.sky.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>
    
    
    xml
复制代码
    控制台输出记录
    
    2023-10-10 22:37:55.033  INFO 18988 --- [nio-8080-exec-5] c.s.controller.admin.EmployeeController  : 员工分页查询,参数为: EmployeePageQueryDTO(name=null, page=1, pageSize=10)
    2023-10-10 22:37:55.239 DEBUG 18988 --- [nio-8080-exec-5] c.s.m.EmployeeMapper.pageQuery_COUNT     : ==>  Preparing: SELECT count(0) FROM employee
    2023-10-10 22:37:55.240 DEBUG 18988 --- [nio-8080-exec-5] c.s.m.EmployeeMapper.pageQuery_COUNT     : ==> Parameters: 
    2023-10-10 22:37:55.246 DEBUG 18988 --- [nio-8080-exec-5] c.s.m.EmployeeMapper.pageQuery_COUNT     : <==      Total: 1
    
    
    2023-10-10 22:37:55.250 DEBUG 18988 --- [nio-8080-exec-5] com.sky.mapper.EmployeeMapper.pageQuery  : ==>  Preparing: select * from employee order by create_time desc LIMIT ?
    //这里显示了 自动补全的代码LIMIT
    
    2023-10-10 22:37:55.252 DEBUG 18988 --- [nio-8080-exec-5] com.sky.mapper.EmployeeMapper.pageQuery  : ==> Parameters: 10(Integer)
    2023-10-10 22:37:55.256 DEBUG 18988 --- [nio-8080-exec-5] com.sky.mapper.EmployeeMapper.pageQuery  : <==      Total: 4
    
    
    java
    
    
![](https://ad.itadn.com/c/weblog/blog-img/images/2025-07-13/FHWSwT1o4xbz9CdVGr5DaljLpU7M.png)

全部评论 (0)

还没有任何评论哟~