苍穹外卖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 最常用
相关推荐
南斯拉夫的铁托3 小时前
YOLO学习笔记
笔记·学习·yolo
YJlio3 小时前
8.2Windows 11 如何用 Xbox Game Bar 实时监测电脑性能?CPU、内存、GPU、显存与 FPS 瓶颈判断教程
windows·笔记·学习·chatgpt·架构·电脑·xbox
talen_hx2964 小时前
OkHttpClient的最佳实践优化方案
java·笔记·学习
三品吉他手会点灯4 小时前
C语言学习笔记 - 26.C编程预备计算机专业知识 - 15~25关键内容回顾
c语言·笔记·学习
许长安14 小时前
RPC 同步调用基本使用方法:基于官方 RouteGuide 示例
c++·经验分享·笔记·rpc
做cv的小昊18 小时前
【TJU】研究生应用统计学课程笔记(8)——第四章 线性模型(4.1 一元线性回归分析)
笔记·线性代数·算法·数学建模·回归·线性回归·概率论
我命由我1234518 小时前
程序员的心理学学习笔记 - 空杯心态
经验分享·笔记·学习·职场和发展·求职招聘·职场发展·学习方法
晓梦林19 小时前
3170靶场学习笔记
笔记·学习
ZC跨境爬虫19 小时前
跟着 MDN 学 HTML day_17:媒体与 Web Audio API 自动播放指南——策略、检测与最佳实践
前端·笔记·ui·html·音视频·媒体