SpringBootWeb案例 Part 2

3. 员工管理

完成了部门管理的功能开发之后,我们进入到下一环节员工管理功能的开发。

SpringBootWeb案例 Part 2_第1张图片

基于以上原型,我们可以把员工管理功能分为:

  1. 分页查询

  2. 带条件的分页查询

  3. 删除员工

  4. 新增员工

  5. 修改员工

那下面我们就先从分页查询功能开始学习。

3.1 分页查询

3.1.1 基础分页

3.1.1.1 需求分析

我们之前做的查询功能,是将数据库中所有的数据查询出来并展示到页面上,试想如果数据库中的数据有很多(假设有十几万条)的时候,将数据全部展示出来肯定不现实,那如何解决这个问题呢?

使用分页解决这个问题。每次只展示一页的数据,比如:一页展示10条数据,如果还想看其他的数据,可以通过点击页码进行查询。

SpringBootWeb案例 Part 2_第2张图片

要想从数据库中进行分页查询,我们要使用LIMIT关键字,格式为:limit 开始索引 每页显示的条数

-- 分页查询语法
-- 参数1:起始索引 = (页码 - 1) * 每页展示记录数
-- 参数2:每页展示记录数 = 查询返回记录数
select * from emp limit 0,10;

-- 查询第一页数据,每页展示5条记录
select * from emp limit 0,5;

-- 查询第二页数据,每页展示5条记录
select * from emp limit 5,5;

-- 查询第三页数据,每页展示5条记录
select * from emp limit 10,5;

观察以上SQL语句,发现: 开始索引一直在改变 , 每页显示条数是固定的

开始索引的计算公式: 开 / 起始索引 = (当前页码 - 1) * 每页显示条数

我们继续基于页面原型,继续分析,得出以下结论:

  1. 前端在请求服务端时,传递的参数

    • 当前页码 page

    • 每页显示条数 pageSize

  2. 后端需要响应什么数据给前端

    • 所查询到的数据列表(存储到List 集合中)

    • 总记录数

SpringBootWeb案例 Part 2_第3张图片SpringBootWeb案例 Part 2_第4张图片

后台给前端返回的数据包含:List集合(数据列表)、total(总记录数)

这两部分我们通常封装到PageBean对象中并将该对象转换为json格式的数据响应回给浏览器。

@Data
@NoArgsConstructor
@AllArgsConstructor
public class PageBean {
private Long total; //总记录数
private List rows; //当前页数据列表
}
3.1.1.2 接口文档

员工列表查询

  • 基本信息

SpringBootWeb案例 Part 2_第5张图片 

  • 请求参数

参数格式:queryString

参数说明:

参数名
是否必
示例 备注
name 姓名
gender 1 性别 , 1 男 , 2 女
begin 2010-01-
01
范围匹配的开始时间(入职日期)
end 2020-01-
01
范围匹配的结束时间(入职日期)
page 1 分页查询的页码如果未指定,默认为1
pageSize 10 分页查询的每页记录数如果未指定,默认为10

请求数据样例:


2.1.3 响应数据
参数格式:application/json
参数说明:
响应数据样例:

SpringBootWeb案例 Part 2_第6张图片
SpringBootWeb案例 Part 2_第7张图片
 

3.1.1.3 思路分析

SpringBootWeb案例 Part 2_第8张图片

分页查询需要的数据,封装在PageBean对象中:  

SpringBootWeb案例 Part 2_第9张图片

package com.gch.pojo;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.List;

/**
   分页查询结果的封装类
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
public class PageBean {
    /** 总记录数 */
    private Long total;
    /** 当前页数据列表 */
    private List rows;
}

 

 

 

 

 

 

 

你可能感兴趣的:(数据库)