黑马-苍穹外卖-Day2-员工分页查询

员工分页查询

  • 此处使用 mybatis 的分页插件 PageHelper 来简化分页代码的开发。底层基于 mybatis 的拦截器实现(pom.xml中)

1. 接收前端提交过来的数据

//  EmployeeServiceImpl.java

    /**
     * 员工分页查询
     * @param employeePageQueryDTO
     * @return
     */
    public PageResult pageQuery(EmployeePageQueryDTO employeePageQueryDTO){
        // select * from employee limit 0,10;  底层是基于MySQL的分页查询,DTO里已经传来了每页的记录数和页码,可以算,也可用插件
        // 开始分页查询,这里用插件,动态拼接sql
        PageHelper.startPage(employeePageQueryDTO.getPage(), employeePageQueryDTO.getPageSize());  // 页码,每一页的记录数

        Page<Employee> page = employeeMapper.pageQuery(employeePageQueryDTO);  //可能还要拼姓名,所以需要传DTO,返回值是遵从了插件的设计
        // 把page对象处理成PageResult对象返回
        long total = page.getTotal();  // 记录总数
        List<Employee> records = page.getResult();  // 当前页数据集合

        return  new PageResult(total, records);
    }

2. employeeMapper中声明pageQuery方法

// employeeMapper.java

    /**
     * 分页查询方法
     * @param employeePageQueryDTO
     * @return
     */
    Page<Employee> pageQuery(EmployeePageQueryDTO employeePageQueryDTO);

3. 动态SQL,添加XML

  • 记得下载mybatisx插件
// EmployeeMapper.xml 

// mapper标签中
    <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  # 这里不能加分号不然就是500!!!
    </select>

4. 存在问题

  • 后端返回给前端的时间格式,并不是完全格式化成年月日时分秒的,返回的是个数组,因此前端直接显示的时候会有问题
  • 需要处理返回的时间格式
    前端时间显示

5. 解决方式

5.1 添加注解
  • 在属性上加注解,对日期进行格式化
  • 这种方式只能处理一个属性,后面其它LocalDateTime变量上面都得加
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createTime;

    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime updateTime;
5.2 统一处理
  • 在WebMvcConfiguration.java中扩展Spring MVC的消息转换器,统一对日期类型进行格式化处理
  • WebMvcConfiguration 继承 WebMvcConfigurationSupport,重写父类的extendMessageConverters方法
// WebMvcConfiguration.java

    /**
     * 扩展Sping MVC框架的消息转换器,对后端返回给前端的数据统一处理
     * @param converters
     */
    @Override
    protected void extendMessageConverters(List<HttpMessageConverter<?>> converters) {
        log.info("扩展消息转换器...");
        // 创建一个消息转换器对象
        MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
        // 需要为消息转换器对象设置一个对象转换器,对象转换器可以将Java对象序列化为Json数据
        converter.setObjectMapper(new JacksonObjectMapper());
        // 将自己的消息转换器加到容器中
        converters.add(0, converter);  // 0,希望加入的转换器放在首位,被优先使用,不加索引回放在最后,不会被用到
    }

// JacksonObjectMapper.java那个文件里有序列化和反序列化的具体代码,黑马提供的
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值