苍穹外卖学习——day03 项目日记

今日完结任务:

完成了员工信息分页查询的功能,以及修改员工状态信息的接口。

今日收获:

1.分页查询接口:

复习了PageHelper的用法。

 @Override
    public PageResult pageQuery(EmployeePageQueryDTO employeePageQueryDTO) {

        // 设置分页参数
        PageHelper.startPage(employeePageQueryDTO.getPage(), employeePageQueryDTO.getPageSize());

        //PageHelper要求我们返回一个Page对象,泛型就为employee实体类
        Page<Employee> page = employeeMapper.pageQuery(employeePageQueryDTO);
        long total = page.getTotal(); // 获取总记录数
        List<Employee> result = page.getResult(); // 获取一页的数据列表
        return new PageResult(total,result);
    }

并且它的底层是居于Mybatis拦截器和动态SQL来实现的。首先Mybatis的拦截器会拦截SQL的执行过程,并且再其执行前对其改写;动态SQL它会在原始的SQL的基础上添加分页查询的逻辑。

2.了解了对日期进行格式化处理的两种方法

  • 在日期属性前加上注解
   @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createTime;

    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime updateTime;

但这种方式仅适用于日期属性较少的情况下。

  • 利用消息转换器统一对日期进行格式化处理

在WebMvcConfiguration中扩展SpringMVC的消息转换器,统一对日期类型进行格式处理

 /**
     * 扩展SpringMVC框架的消息转换器
     */
    @Override
    protected void extendMessageConverters(List<HttpMessageConverter<?>> converters) {
        log.info("扩展消息转换器。。。");
        //创建一个消息转换器
        MappingJackson2HttpMessageConverter converter = new
                MappingJackson2HttpMessageConverter();
        //需要为消息转换器设置一个对象转换器,对象转换器可以将java对象序列化为json数据
        converter.setObjectMapper(new JacksonObjectMapper());
        //将自己的消息转换器加入converters容器中
        converters.add(0,converter); // 0:把它放到容器的第一个
    }

核心就是要创建了一个 MappingJackson2HttpMessageConverter 的实例。MappingJackson2HttpMessageConverter 是Spring提供的一个消息转换器,专门用于处理JSON格式的数据。

它的作用是:

将Java对象序列化为JSON格式(响应)。

将JSON数据反序列化为Java对象(请求)。

时间格式定义在JacksonObjectMapper中

package com.sky.json;

public class JacksonObjectMapper extends ObjectMapper {

	//.......
    public static final String DEFAULT_DATE_TIME_FORMAT = "yyyy-MM-dd HH:mm";
    //.......

    }
}

自定义的 JacksonObjectMapper 可能包含一些特定的配置,比如:

设置日期格式。

忽略未知字段。

配置序列化/反序列化的规则。

3.实现了修改员工状态信息的接口(启用或禁用)

了解了通过构造器builder来设置对象的属性。

 public void startOrStop(Integer status, long id) {
        //利用Bulider构造器来创建对象属性
        Employee e = Employee.builder()
                .status(status)
                .id(id)
                .build();

        //动态更新(传入一个employee来选择性的动态更新),这样只需写一个sql语句就可以完成多种更新操作
        employeeMapper.update(e);

Builder是通过注解的方式声明的。

总结:

今天因为上了一天课所以完成的接口比较少,不过回忆起来很多之前Javaweb学的知识点。并且也了解了一些新的优化代码的方式。感觉自己每天的进度还是有点慢,还得搞自己课题上的事情,好好加油吧。

如果我的内容对你有帮助,请点赞,评论,收藏。创作不易,大家的支持就是我坚持下去的动力!

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值