3. 员工管理
完成了部门管理的功能开发之后,我们进入到下一环节员工管理功能的开发。
基于以上原型,我们可以把员工管理功能分为:
-
分页查询
-
带条件的分页查询
-
删除员工
-
新增员工
-
修改员工
那下面我们就先从分页查询功能开始学习。
3.1 分页查询
3.1.1 基础分页
3.1.1.1 需求分析
我们之前做的查询功能,是将数据库中所有的数据查询出来并展示到页面上,试想如果数据库中的数据有很多(假设有十几万条)的时候,将数据全部展示出来肯定不现实,那如何解决这个问题呢?
使用分页解决这个问题。每次只展示一页的数据,比如:一页展示10条数据,如果还想看其他的数据,可以通过点击页码进行查询。
要想从数据库中进行分页查询,我们要使用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) * 每页显示条数
我们继续基于页面原型,继续分析,得出以下结论:
-
前端在请求服务端时,传递的参数
-
当前页码 page
-
每页显示条数 pageSize
-
-
后端需要响应什么数据给前端
-
所查询到的数据列表(存储到List 集合中)
-
总记录数
-
后台给前端返回的数据包含:List集合(数据列表)、total(总记录数)
而这两部分我们通常封装到PageBean对象中,并将该对象转换为json格式的数据响应回给浏览器。
@Data
@NoArgsConstructor
@AllArgsConstructor
public class PageBean {
private Long total; //总记录数
private List rows; //当前页数据列表
}
3.1.1.2 接口文档
员工列表查询
-
基本信息
- 请求参数
参数格式: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
参数说明:
响应数据样例:
3.1.1.3 思路分析
分页查询需要的数据,封装在PageBean对象中:
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;
}