苍穹外卖-DAY11
苍穹外卖-DAY11
一、Apache Ecaht
Apache ECharts 是一个基于 JavaScript 的开源可视化图表库。它最早由百度开发,后来捐赠给了 Apache 软件基金会,现在是 Apache 的顶级项目。
它在前端开发中非常流行,特别是对于后台管理系统(如你正在做的 sky-take-out 项目)的数据大屏和报表展示。
以下是关于 Apache ECharts 的详细解释,包括核心概念、优势以及如何使用。
1. 核心优势
- 开源免费:完全免费,遵循 Apache 2.0 协议。
- 图表类型丰富:不仅支持基础的折线图、柱状图、饼图,还支持地图、热力图、雷达图、关系图(Graph)、K线图、3D 图表等。
- 高性能:基于 ZRender(一个轻量级的 Canvas 类库),能够流畅展示成千上万条数据,甚至支持千万级数据的渲染。
- 交互性强:自带缩放(Zoom)、漫游(Roam)、图例开关、数据区域缩放、拖拽重计算等交互功能。
- 配置式驱动:你只需要定义一个 JSON 格式的配置对象(
option),ECharts 就会自动渲染出图表,无需关心底层的绘图逻辑。
2. 核心概念
使用 ECharts 基本上就是在构建一个 option 对象。理解以下几个属性至关重要:
- title (标题): 图表的标题。
- tooltip (提示框): 鼠标悬停在图表元素上时显示的信息框。
- legend (图例): 用于筛选系列的分类(例如点击图例可以隐藏某条折线)。
- xAxis / yAxis (坐标轴): 直角坐标系中的 X 轴和 Y 轴配置。
- series (系列): 最关键的部分。定义了数据是什么,以及用什么类型的图表(type)来展示(如
type: 'bar'是柱状图,type: 'line'是折线图)。 - grid (绘图网格): 控制图表在容器中的位置和内边距。
3. 快速上手代码示例
步骤:
- 准备一个有宽高的 DOM 容器。
- 引入 ECharts 库。
- 初始化 ECharts 实例。
- 配置
option并设置。
1 |
|
4. 在 Vue 项目中使用
既然你在做 Java 后端项目,前端很可能使用的是 Vue.js。在 Vue 中使用 ECharts 通常有两种方式:
方式一:直接使用
在组件的 mounted 生命周期钩子中初始化:
JavaScript
1 | <template> |
方式二:使用封装组件
社区有封装好的库,如 vue-echarts,可以更方便地以组件形式使用。
5. 高级功能简述
- 多图联动 (Connect): 可以让多个图表共享 tooltip 或缩放。
- 动态数据: 可以通过
setOption动态更新数据,ECharts 会自动寻找差异并执行动画过渡。 - 自定义主题: 可以在官网的主题构建工具中设计配色,下载 JSON 后导入使用。
- 地图可视化: 支持中国地图、世界地图以及各省市地图,常用于展示地域分布数据(如全国外卖订单热力图)。
官方网站
1 | https://echarts.apache.org/zh/index.html |
dateList
1 | List<LocalDate> list = new ArrayList<>(); |
通过范围获取dataList
二、springboot中时间相关接口
1.时间三剑客(数据类型)
| 类型 | 名字 | 存什么? | 例子 | 适用场景 |
|---|---|---|---|---|
LocalDate |
本地日期 | 只存日期 (年月日) | 2023-10-01 |
生日、入职日期、节假日 |
LocalTime |
本地时间 | 只存时间 (时分秒) | 12:30:05 |
闹钟、午休开始时间 |
LocalDateTime |
本地日期时间 | 都存 (日期+时间) | 2023-10-01 12:30:05 |
订单创建时间、打卡记录 |
一句话总结: 90% 的业务场景,你直接用
LocalDateTime准没错。
2.DateTimeFormatter
DateTimeFormatter。它的作用就是在“时间对象”和“字符串”之间做转换。
- 把时间变成字符串 (Format):
2023-10-01 12:00:00(对象) ->"2023/10/01"(字符串) - 把字符串变成时间 (Parse):
"2023-10-01"(字符串) ->2023-10-01(对象)
3.springboot中配置类全局定义
@Configuration 配置类。
最彻底的全局配置代码
你可以直接把这段代码复制到你的项目中(新建一个类放进去)
1 | import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer; |
配置后的效果:
- 以前: 你得在 User 类的
createTime字段上加@JsonFormat(pattern=...)。 - 现在: 什么都不用加!只要字段类型是
LocalDateTime,Spring Boot 就会自动根据上面的配置,把它处理成yyyy-MM-dd HH:mm:ss。
4.注解区别
这俩确实是“最容易搞混”的难兄难弟。别被名字忽悠了,它俩的区别其实特别简单,就看你的数据“长在哪儿”。
一句话口诀:@JsonFormat 管肚子(Body),@DateTimeFormat 管帽子(URL/表单)。
@JsonFormat (Jackson 库提供)
它是处理 JSON 数据 的。只要你的接口涉及到 JSON 格式(不管是发出去,还是收进来),就是它的地盘。
- 场景:
- 出参:后端把对象转成 JSON 返回给前端时(序列化)。
- 入参:前端发
POST/PUT请求,把 JSON 数据放在 Body 里传给后端时(反序列化)。
- 位置:通常加在实体类(DTO/POJO)的 字段 上。
1 | public class UserDTO { |
@DateTimeFormat (Spring 框架提供)
它是处理 非 JSON 数据 的。也就是那些挂在 URL 后面,或者用普通表单提交的数据。
- 场景:
- 入参:前端发
GET请求,参数在 URL 问号后面(如?date=2023-10-01)。 - 入参:前端用普通
<form>表单提交(application/x-www-form-urlencoded)。
- 入参:前端发
- 位置:可以加在 Controller 方法的参数 前面,也可以加在实体类的字段上(如果这个实体是用作表单接收对象)。
1 | // Controller |
| 特性 | @JsonFormat | @DateTimeFormat |
|---|---|---|
| 出身 | Jackson 库 (第三方) | Spring 框架 (亲儿子) |
| 管辖范围 | JSON Body (请求体/响应体) | URL 参数 (Query Param) 或 表单 |
| 典型请求 | POST (带 JSON), PUT |
GET (带参数), 普通表单 POST |
| 关键注解配合 | 必须配合 @RequestBody 才会生效 |
配合 @RequestParam 或直接对象接收 |
| 常用程度 | ⭐⭐⭐⭐⭐ (因为现在前后端分离都用 JSON) | ⭐⭐⭐ (老项目或简单的查询接口用) |
配置了全局的时间转换器(Configuration),那么:
- @JsonFormat` 基本就可以退休了(全局搞定 JSON)
- 但
@DateTimeFormat在写GET请求的 Controller 参数时,可能偶尔还得用一下
