苍穹外卖Day10笔记

苍穹外卖笔记 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 对象:nameListvalueList

二、@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. 常用转义(苍穹外卖必背)

  • &gt;> 大于号
  • &lt;< 小于号
  • &amp; → &
  • &quot; → "
  • ' → '

3. 业务场景(时间范围查询)

xml 复制代码
where order_time >= #{begin}
and order_time &lt; #{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 核心)

  1. ECharts:负责数据可视化,后端封装统计数据
  2. @DateTimeFormat:接收前端日期,自动封装
  3. plusDays(1)、of():时间计算、构建起始/结束时间
  4. > <:XML 中大于、小于号必须转义
  5. Stream 流:filter、map、sum、groupingBy、sorted、collect 最常用
相关推荐
kaixin_啊啊26 分钟前
中国研究生数学建模竞赛(华为杯)学习笔记——三维瀑布图绘图代码
笔记·学习·数学建模
动词ing34 分钟前
【学习笔记】数据结构(链表合并 双指针合并有序链表)
数据结构·笔记·学习
问心无愧05131 小时前
ctf show web 178
前端·笔记
ljt27249606611 小时前
Vue笔记--路由
javascript·vue.js·笔记
疯狂打码的少年2 小时前
【计算机网络】网络互连设备(中继器 / 网桥 / 交换机 / 路由器 / 网关)
网络·笔记·计算机网络·智能路由器
ljt27249606612 小时前
Vue笔记--状态管理
前端·vue.js·笔记
John_ToDebug10 小时前
判断力无法被 AI 替代,但它正在被你亲手扔掉
经验分享·笔记
柳鲲鹏12 小时前
运气学概论:提纲草案
笔记
疯狂打码的少年14 小时前
【计算机网络】子网掩码与子网划分计算(含CIDR表示法)
服务器·笔记·计算机网络·php
自小吃多16 小时前
PCB Editor软件复制、改变、删除操作笔记
笔记·嵌入式硬件