苍穹外卖笔记 Day11
0. 前言
- 日期:2026.04.24
- 核心内容:Apache ECharts、时间格式化、LocalDateTime 常用API、XML 转义字符、Stream 流常用方法
- 难度:基础
- 面试/开发重点:时间处理、Stream 流式编程、ECharts 数据封装、XML 特殊字符转义
一、Apache ECharts(苍穹外卖数据统计)
1. 基本介绍
- Apache ECharts 是开源可视化图表库 ,用于前端展示数据统计图表
- 苍穹外卖场景:营业额统计、订单统计、用户统计、销量排名
- 后端只需要封装对应格式的数据(List、Map、VO),交给前端渲染
2. 苍穹外卖常用图表
- 折线图:每日营业额、订单量趋势
- 柱状图:菜品销量、套餐销量
- 饼图:订单状态占比、品类销量占比
3. 后端开发要点
- 按时间分组统计数据
- 封装
name(x轴)和value(y轴)数据 - 返回给前端 VO 对象:
nameList、valueList
二、@DateTimeFormat 时间格式化
1. 作用
- 接收前端传入的日期字符串 ,自动封装为
LocalDate/LocalDateTime - 用于Controller 接口参数
2. 常用写法
java
@DateTimeFormat(pattern = "yyyy-MM-dd")
private LocalDate begin;
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime begin;
3. 作用场景
- 苍穹外卖:时间范围查询(今日、昨日、近7天、本月)
- 前端传:
2026-04-24 - 后端自动封装为
LocalDate
三、LocalDateTime 常用 API(苍穹外卖高频)
1. begin.plusDays(1)
- 作用:给日期加 1 天
- 苍穹外卖用途:统计截止时间 end = begin + 1天
- 示例:
java
LocalDate begin = LocalDate.now();
LocalDate end = begin.plusDays(1);
2. LocalDateTime.of()
- 作用:手动构建
LocalDateTime - 常用于拼接起始时间 00:00:00 和 结束时间 23:59:59
- 示例:
java
LocalDateTime startTime = LocalDateTime.of(begin, LocalTime.MIN);
LocalDateTime endTime = LocalDateTime.of(end, LocalTime.MAX);
四、XML 转义字符(MyBatis 映射文件)
1. 为什么需要转义
- MyBatis 的 XML 中 < > & " ' 有特殊意义
- 直接写会报错,必须转义
2. 常用转义(苍穹外卖必背)
>→ > 大于号<→ < 小于号&→ &"→ "'→ '
3. 业务场景(时间范围查询)
xml
where order_time >= #{begin}
and order_time < #{end}
五、Stream 流常见常用方法(苍穹外卖高频)
1. filter 过滤
java
list.stream()
.filter(orders -> orders.getPayStatus() == 1)
.collect(Collectors.toList());
2. map 转换/提取字段
java
List<Long> ids = list.stream()
.map(Order::getId)
.collect(Collectors.toList());
3. sorted 排序
java
.sorted(Comparator.comparing(Order::getOrderTime))
4. collect(Collectors.toList()) 转List
java
.collect(Collectors.toList())
5. collect(Collectors.toMap()) 转Map
java
.collect(Collectors.toMap(Order::getId, Order::getAmount))
6. sum 求和(数字类型)
java
int sum = list.stream().mapToInt(Dish::getSales).sum();
7. groupingBy 分组统计
java
Map<Integer, List<Order>> map = list.stream()
.collect(Collectors.groupingBy(Order::getStatus));
8. forEach 遍历
java
list.stream().forEach(System.out::println);
六、总结(Day11 核心)
- ECharts:负责数据可视化,后端封装统计数据
- @DateTimeFormat:接收前端日期,自动封装
- plusDays(1)、of():时间计算、构建起始/结束时间
- > <:XML 中大于、小于号必须转义
- Stream 流:filter、map、sum、groupingBy、sorted、collect 最常用