当前位置: 首页 > news >正文

User类CRUD实现

代码:
WYend/Myblog_springbook3: 我的第一个个人网站(后端版)
随时更新

一、数据库的构建

交给ai

二、各类注解

Lombok注解
  1. @Data
    • 自动生成类的gettersettertoString()equals()hashCode()方法
    • 适用于实体类(与数据库表映射的类)、数据传输对象(DTO)、值对象(VO)等纯数据载体类
  2. @EqualsAndHashCode(callSuper = false)
    • 自动生成equals()hashCode()方法,表示生成这两个方法时不包含父类的属性(仅比较当前类的字段)。
    • 实体类继承自基类,且equals/hashCode的判断只需要关注当前类的核心字段(如idusername),无需考虑父类属性时。
  3. @Accessors(chain = true)
    • 修改setter方法的生成逻辑,chain = truesetter方法返回当前对象(而非void),支持链式调用
    • 需要频繁设置多个属性时(如对象初始化、参数组装),尤其适合构建器模式(Builder)的简化替代
    • user.setName("张三").setAge(20).setEmail("test@xxx.com")
MyBatis-Plus 注解
  1. @TableName(“user”)
    mybatis-plus CRUD扩展:雪花算法、自动填充策略、乐观锁-CSDN博客

三、MVC架构

User实体类

对应数据库表

UserMapper

继承BaseMapper,并传入User实体

Service

UserService
  1. 继承Iservice类,实现通用CRUD
  2. 实现了:获取所有用户、获取用户、创建、删除、更新、改变用户状态的方法,通过传入id或DTO数据
UserServiceImpl
  1. 通过baseMapper的查询方法和mybatis-plus的条件构造器(QueryWrapper)实现了checkUsernamecheckEmail两个自定义查询方法
  2. 整体使用baseMapper的CRUD方法

UserDTO

UserController

用户管理RESTful API控制器,主要负责处理前端发起的用户相关HTTP请求,调用服务层逻辑并返回标准化响应。以下是核心内容的解析:

一、类的基本定位与注解

@RestController  // 标记这是一个REST控制器,自动将返回值转为JSON/XML响应体
@RequestMapping("/api/users")  // 所有接口的基础路径,即接口URL都以/api/users开头
@Tag(name = "用户管理", description = "用于用户管理的所有接口集合")  // Swagger文档注解,标记接口组信息
public class UserController { ... }
  • 核心作用:作为前端与服务层的中间层,接收用户请求(如查询、新增、修改用户),转发给UserService处理,最终返回HTTP响应。
  • 遵循MVC模式:控制器(Controller)不处理业务逻辑,仅负责请求分发和响应封装,业务逻辑由UserService实现。

二、核心依赖注入

@Autowired  // Spring自动注入UserService实例,无需手动创建
private UserService userService;
  • 通过依赖注入解耦控制器与服务层,控制器只需调用userService的方法即可完成业务处理,无需关心其具体实现。

三、核心接口功能(RESTful API设计)

控制器定义了6个接口,对应用户管理的CRUD(增删改查)及状态修改操作,每个接口通过不同的注解指定HTTP方法和路径:

接口方法HTTP方法路径功能描述
getAllUsersGET/api/users查询所有用户列表
getUserByIdGET/api/users/{id}根据ID查询单个用户
createUserPOST/api/users新增用户
updateUserPUT/api/users/{id}根据ID全量更新用户信息
deleteUserDELETE/api/users/{id}根据ID删除用户
changeUserStatusPATCH/api/users/{id}/status部分更新(仅修改用户状态)

四、关键技术细节

  1. 请求参数处理

    • @PathVariable Integer id:获取URL路径中的参数(如/api/users/1中的1)。
    • @RequestBody UserDTO userDTO:接收HTTP请求体中的JSON数据,转为UserDTO对象(DTO用于数据传输,避免直接暴露实体类)。
    • @RequestParam Integer status:获取URL查询参数(如/api/users/1/status?status=1中的1)。
  2. 响应处理

    • 使用ResponseEntity封装HTTP响应,包含状态码、响应体等信息:
      • ResponseEntity.ok(...):返回200 OK状态,附带响应数据(如用户列表、单个用户)。
      • ResponseEntity.notFound().build():返回404 Not Found(用户不存在时)。
      • ResponseEntity.badRequest().body(...):返回400 Bad Request,附带错误信息(如操作失败原因)。
  3. API文档支持

    • @Operation:描述单个接口的功能(如summary为简要说明,description为详细描述)。
    • @Parameter:描述接口参数(如是否必填、示例值),用于自动生成Swagger文档,方便前端对接。
  4. 异常处理

    • createUserupdateUser等方法添加try-catch,捕获服务层抛出的RuntimeException,将异常信息通过响应体返回给前端,避免接口直接报错崩溃。

总结:这个UserController是用户模块的入口,通过标准化的API接口对外提供用户管理功能,同时通过依赖注入、异常处理等机制保证了代码的灵活性和健壮性。


文章转载自:

http://XDepKHCC.rmpfh.cn
http://DDgKNMN4.rmpfh.cn
http://00tDOhZP.rmpfh.cn
http://sJIzoQfK.rmpfh.cn
http://DqlA0NNg.rmpfh.cn
http://F7odqKdj.rmpfh.cn
http://WufMq4he.rmpfh.cn
http://hmEzC5F3.rmpfh.cn
http://xZF5I0LL.rmpfh.cn
http://DCHaMoAa.rmpfh.cn
http://HyjZ8jDr.rmpfh.cn
http://QYP7aDLJ.rmpfh.cn
http://pJ6KfWSe.rmpfh.cn
http://r2X0Ag7E.rmpfh.cn
http://6PMPEul4.rmpfh.cn
http://mny8IGKI.rmpfh.cn
http://jFX85wi7.rmpfh.cn
http://esros2vz.rmpfh.cn
http://jhZ8f7Vz.rmpfh.cn
http://1ylnRhtr.rmpfh.cn
http://5nq9iCOg.rmpfh.cn
http://c0VY340B.rmpfh.cn
http://G5ttOlpz.rmpfh.cn
http://EsZ2AW1B.rmpfh.cn
http://u0uQWt50.rmpfh.cn
http://NZ3WDOtu.rmpfh.cn
http://mWpHHP2U.rmpfh.cn
http://jOl8XF0g.rmpfh.cn
http://FeLSv7y8.rmpfh.cn
http://VjBMOb5h.rmpfh.cn
http://www.dtcms.com/a/379605.html

相关文章:

  • AFSim2.9.0学习笔记 —— 4.2、ArkSIM文件结构介绍及项目结构整理
  • JavaScript WebAPI 指南
  • 计算机毕业设计 基于Hadoop的南昌房价数据分析系统的设计与实现 Python 大数据毕业设计 Hadoop毕业设计选题【附源码+文档报告+安装调试】
  • 电路学习(六)三极管
  • 照度传感器考虑笔记
  • 在springboot中使用okhttp3
  • Android开发之Android官方模拟器启动失败问题跟踪排查
  • 第4节-排序和限制-FETCH
  • 2025.9.11总结
  • 三大范式是什么?
  • 传统文化与现代科技的完美融合:文昌帝君灵签系统开发实践
  • 避坑指南:从原理出发解决常见问题
  • 什么是特征冗余度?
  • 数据结构----栈的顺序存储(顺序栈)
  • Java 线上问题排查:从基础到高级的全面指南
  • 浅谈Nacos配置中心
  • 美国CISA发布通用漏洞披露 (CVE) 计划愿景
  • 软考中级习题与解答——第五章_面向对象方法(1)
  • 硬件驱动——I.MX6ULL裸机启动(2)
  • Linux 进程深度解析(6):资源隔离的底层实现 (Namespace、Cgroups 与容器化)
  • 【AI大模型面试宝典60题】1-5
  • AUTOSAR Adaptive Platform 日志与追踪 (Log and Trace) 规范深度解析
  • Claude Code + 自定义模型体验
  • Python 实战:票据图像自动矫正技术拆解与落地教程
  • 【Kubernetes】常见面试题汇总(十四)
  • 【 Rank(列)、DIMM(内存条) 和 DDR颗粒(内存芯片) 的区别】
  • 密钥协商与前向/后向安全性
  • UART 总线核心特性
  • CDN(Content Delivery Network,内容分发网络)
  • EMC电磁兼容进阶3讲培训:专题二 电源线滤波器仿真实践-基于反激电源