2. 员工分页查询
2.1 需求分析和设计
2.1.1 产品原型
2.1.2 接口设计
2.2 代码开发
2.2.1 设计DTO类
根据请求参数进行封装
2.2.2 封装PageResult
后面所有的分页查询,统一都封装为PageResult对象。
员工信息分页查询后端返回的对象类型为: Result
2.2.3 Controller层
因为前端传过来的不是Json格式数据, 所以不需要@RequestBody
/*** 员工分页查询* @param employeePageQueryDTO* @return*/@GetMapping("/page")@ApiOperation("员工分页查询")public Result<PageResult> page(EmployeePageQueryDTO employeePageQueryDTO){log.info("员工分页查询,参数为:{}", employeePageQueryDTO);PageResult pageResult = employeeService.pageQuery(employeePageQueryDTO);//后续定义return Result.success(pageResult);}
2.2.5 Service层实现类
在EmployeeServiceImpl中实现pageQuery方法:
/*** 分页查询** @param employeePageQueryDTO* @return*/public PageResult pageQuery(EmployeePageQueryDTO employeePageQueryDTO) {// select * from employee limit 0,10//开始分页查询PageHelper.startPage(employeePageQueryDTO.getPage(), employeePageQueryDTO.getPageSize());Page<Employee> page = employeeMapper.pageQuery(employeePageQueryDTO);//后续定义long total = page.getTotal();List<Employee> records = page.getResult();return new PageResult(total, records);}
2.2.6 Mapper层
/*** 分页查询* @param employeePageQueryDTO* @return*/Page<Employee> pageQuery(EmployeePageQueryDTO employeePageQueryDTO);
细节一 : PageHelper
**注意:**此处使用 mybatis 的分页插件 PageHelper 来简化分页代码的开发。底层基于 mybatis 的拦截器实现。
public PageResult pageQuery(EmployeePageQueryDTO employeePageQueryDTO) {
// select * from employee limit 0,10
// 开始分页查询
PageHelper.startPage(employeePageQueryDTO.getPage(), employeePageQueryDTO.getPageSize());
Page<Employee> page = employeeMapper.pageQuery(employeePageQueryDTO);
long total = page.getTotal();
List<Employee> records = page.getResult();
return new PageResult(total, records);
}
实现细节
PageHelper.startPage(employeePageQueryDTO.getPage(), employeePageQueryDTO.getPageSize());⬇
⬇
⬇ ⬇
所以PageHelper底层还是一个ThreadLocal
而在之后的分页查询操作之前, 就会从ThreadLocal变量中把分页要求(页码, 每页记录数)查询出来
并在执行查询语句时, 动态得加上 limit 限制
select * from employee limit 0,10
故在pom.xml文中添加依赖(初始工程已添加)
细节二 : 扩展SpringMVC框架的消息转换器
解决方式:
1). 方式一
在属性上加上注解,对日期进行格式化
太麻烦了 不用
2). 方式二(推荐 )
在WebMvcConfiguration中扩展SpringMVC的消息转换器,统一对后端返回给前端的日期数据类型进行格式处理
converters是整个SpringMVC使用的转化器集合
对象转换器继承自Jackson 包中进行json处理的类,
将属性中的LocalDataTime类型数据进行格式化处理