苍穹外卖(三) 员工分页及技术实现细节

本文详细描述了如何在员工分页查询项目中,通过设计DTO类、接口、Controller和Service层实现,利用PageHelper进行MyBatis分页,以及如何扩展SpringMVC消息转换器,统一处理日期格式问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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类型数据进行格式化处理

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值