springboot_03

1. 更新用户基本信息

  • 路由:@PutMapping("/user/update")

  • 前端传递 nickname、email 等字段封装到 DTO

  • 后端用 @Validated 开启参数校验

  • 使用 ThreadLocal(或 JWT 拦截器)获取当前登录用户 ID

  • Service 层只更新该用户自己的信息,避免越权


2. 更新信息时的参数校验

  • DTO 中字段如 nickname、email 上加 @NotBlank、@Email

  • Controller 方法使用 @Validated @RequestBody

  • 出现校验异常时,统一由 @RestControllerAdvice 全局异常处理器捕获,返回格式化错误信息


3. 更新用户头像(本地存储)

  • 前端通过 FormData 上传图片,后端用 MultipartFile 接收

  • 使用 UUID 生成唯一文件名,保留原扩展名

  • 保存到本地固定目录(如 /upload/)

  • 把文件访问 URL 存入用户表 avatar 字段


4. 修改用户密码

  • 前端提交原密码 + 新密码

  • 后端先通过用户 ID 查询出旧密码(MD5 加密)

  • 使用工具类 DigestUtils.md5Hex() 对比原密码

  • 验证通过则更新为新密码(同样 MD5 加密后存储)


5. 新增文章分类

  • 路由:@PostMapping("/category")

  • 接收 DTO(如 name、alias)

  • 对 DTO 使用 @Valid + 分组 @Validated 校验字段不能为空

  • Service 层调用 Mapper 插入数据库

  • 返回 Result.success()


6. 查询分类列表

  • 路由:@GetMapping("/category")

  • 无需参数或带条件分页(可选)

  • Service 层调用 Mapper 查询 List<CategoryVO>

  • VO 可使用 @JsonFormat 格式化时间字段(如 createTime、updateTime)


7. 获取分类详情

  • 路由:@GetMapping("/category/{id}")

  • 根据 URL 路径参数接收 id

  • Service 调用 Mapper 根据主键查询分类

  • 返回前端用于回显


8. 修改文章分类

  • 路由:@PutMapping("/category")

  • DTO 除了 name、alias 还需带 id

  • 启用分组校验(@Validated(Update.class))

  • Service 调用 Mapper 更新数据

  • 返回 Result.success()


9. 分类新增/修改 + 分组校验

  • 同一个 DTO 既可用于新增也可用于修改

  • 使用分组接口区分校验规则:

```java

public interface Add {}

public interface Update {}

```

  • @NotNull(groups = Update.class) 表示仅在更新时必须带 id

  • Controller 根据操作调用对应分组


10. 新增文章

  • 路由:@PostMapping("/article")

  • 前端提交 title、content、coverImg、categoryId、state

  • DTO 使用 @NotBlank、@NotNull、@URL、@Size 限制长度、合法性

  • 自定义 @State 校验字段只能是"已发布"或"草稿"

  • Service 中自动填充 createUser(当前登录用户)、createTime

  • 调用 Mapper 插入文章表


11. 自定义注解 @State

  • 新建注解 @State

  • 配套写校验器 StateValidation implements ConstraintValidator

  • 校验器逻辑:如果 state 不在允许列表则抛异常

  • 在 DTO state 字段上加 @State 启用校验


12. 文章分页查询 + 条件查询

  • 路由:@GetMapping("/article")

  • 参数:pageNum、pageSize、可选 categoryId、state

  • Service 中使用 PageHelper.startPage(pageNum, pageSize)

  • Mapper 按条件动态 SQL 查询文章列表

  • 返回封装好的 PageBean<ArticleVO> 包含列表和总条数


13. 文件上传(本地)

  • 路由:@PostMapping("/upload")

  • 接收前端 FormData,参数名需一致

  • 使用 UUID 生成唯一文件名避免覆盖

  • file.transferTo(new File(uploadPath)) 存到本地

  • 返回访问 URL,前端可回显图片

相关推荐
用户693717500138410 分钟前
2026,程序员的时代拐点到了
android·前端·后端
惜鸟23 分钟前
从源码看 pi 的上下文管理:原始数据永久保留,模型视角按需裁剪
后端
量化分析码农31 分钟前
【Python量化策略评估体系 #05】极端行情扛得住吗?2008/2015/2020 三场景压力测试
后端
十年Java程序媛31 分钟前
Java 接口和抽象类对比|Java8 新特性,抛弃老旧八股,正确选型
java·spring boot·后端
IT_陈寒34 分钟前
SpringBoot自动配置差点让我加班到凌晨
前端·人工智能·后端
用户8356290780511 小时前
使用 Python 对 Excel 工作表进行排序
后端·python
程序员cxuan1 小时前
腾讯又来一王炸,开源版 WorkBuddy 太夯了!
人工智能·后端·程序员
用户8356290780511 小时前
使用 Python 合并 PowerPoint 演示文稿
后端·python
掘金者阿豪2 小时前
数据同步软件技术实践:从异构数据库迁移到实时数据流转,解析电科金仓KFS架构设计
后端
ServBay2 小时前
不会写代码,如何搭建自己的 AI 自动化工作流
后端·aigc·ai编程