代碼:
WYend/Myblog_springbook3: 我的第一個個人網站(后端版)
隨時更新
一、數據庫的構建
交給ai
二、各類注解
Lombok注解
- @Data:
- 自動生成類的
getter
、setter
、toString()
、equals()
、hashCode()
方法 - 適用于實體類(與數據庫表映射的類)、數據傳輸對象(DTO)、值對象(VO)等純數據載體類
- 自動生成類的
- @EqualsAndHashCode(callSuper = false)
- 自動生成
equals()
和hashCode()
方法,表示生成這兩個方法時不包含父類的屬性(僅比較當前類的字段)。 - 實體類繼承自基類,且
equals/hashCode
的判斷只需要關注當前類的核心字段(如id
、username
),無需考慮父類屬性時。
- 自動生成
- @Accessors(chain = true)
- 修改
setter
方法的生成邏輯,chain = true
讓setter
方法返回當前對象(而非void
),支持鏈式調用。 - 需要頻繁設置多個屬性時(如對象初始化、參數組裝),尤其適合構建器模式(Builder)的簡化替代
user.setName("張三").setAge(20).setEmail("test@xxx.com")
- 修改
MyBatis-Plus 注解
- @TableName(“user”)
mybatis-plus CRUD擴展:雪花算法、自動填充策略、樂觀鎖-CSDN博客
三、MVC架構
User實體類
對應數據庫表
UserMapper
繼承BaseMapper,并傳入User實體
Service
UserService
- 繼承Iservice類,實現通用CRUD
- 實現了:獲取所有用戶、獲取用戶、創建、刪除、更新、改變用戶狀態的方法,通過傳入id或DTO數據
UserServiceImpl
- 通過baseMapper的查詢方法和mybatis-plus的條件構造器(
QueryWrapper
)實現了checkUsername
和checkEmail
兩個自定義查詢方法 - 整體使用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方法 | 路徑 | 功能描述 |
---|---|---|---|
getAllUsers | GET | /api/users | 查詢所有用戶列表 |
getUserById | GET | /api/users/{id} | 根據ID查詢單個用戶 |
createUser | POST | /api/users | 新增用戶 |
updateUser | PUT | /api/users/{id} | 根據ID全量更新用戶信息 |
deleteUser | DELETE | /api/users/{id} | 根據ID刪除用戶 |
changeUserStatus | PATCH | /api/users/{id}/status | 部分更新(僅修改用戶狀態) |
四、關鍵技術細節
-
請求參數處理:
@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
)。
-
響應處理:
- 使用
ResponseEntity
封裝HTTP響應,包含狀態碼、響應體等信息:ResponseEntity.ok(...)
:返回200 OK狀態,附帶響應數據(如用戶列表、單個用戶)。ResponseEntity.notFound().build()
:返回404 Not Found(用戶不存在時)。ResponseEntity.badRequest().body(...)
:返回400 Bad Request,附帶錯誤信息(如操作失敗原因)。
- 使用
-
API文檔支持:
@Operation
:描述單個接口的功能(如summary
為簡要說明,description
為詳細描述)。@Parameter
:描述接口參數(如是否必填、示例值),用于自動生成Swagger文檔,方便前端對接。
-
異常處理:
- 對
createUser
、updateUser
等方法添加try-catch
,捕獲服務層拋出的RuntimeException
,將異常信息通過響應體返回給前端,避免接口直接報錯崩潰。
- 對
總結:這個UserController
是用戶模塊的入口,通過標準化的API接口對外提供用戶管理功能,同時通過依賴注入、異常處理等機制保證了代碼的靈活性和健壯性。