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://www.pswp.cn/bicheng/96563.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/96563.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/96563.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【Linux | 網絡】數據鏈路層

一、以太網1.1 認識以太網1.2 以太網幀格式1.3 MAC地址1.3.1 認識MAC地址1.3.2 MAC地址的類型1.3.3 MAC地址 VS IP地址1.4 局域網如何通信1.5 局域網數據碰撞1.5.1 數據碰撞1.5.2 劃分碰撞域(交換機)二、ARP協議2.1 ARP協議的作用2.2 ARP數據報的格式2.3…

Google Ads廣告驗證全攻略:如何借助動態住宅IP精準投放?

在競爭激烈的數字廣告領域,Google Ads扮演著至關重要的角色。然而,隨著廣告政策的不斷更新和平臺對廣告質量要求的提高,廣告驗證已成為許多廣告主繞不開的環節。同時,如何實現精準投放,將廣告觸達最相關的目標受眾&…

鴻蒙Next Web組件生命周期詳解:從加載到銷毀的全流程掌控

想要精通鴻蒙應用開發?Web組件的9大生命周期回調是你必須掌握的上帝視角!在鴻蒙應用開發中,Web組件是我們加載本地或在線網頁的強大工具。它提供了完整的生命周期回調體系,讓開發者能夠精準感知網頁加載的每個階段,從而…

python學習進階之異常和文件操作(三)

文章目錄1.程序異常2.文件操作3.json操作1.程序異常 1.1 異常 異常概念: 程序在運行時, 如果Python解釋器遇到到一個錯誤, 則會停止程序的執行, 并且提示一些錯誤信息, 這就是異常 拋出異常: 程序停止執行并且提示錯誤信息這個動作, 通常稱之為拋出(ra…

NodeJS 8 ,從 0 到 1:npm 包發布與更新全流程指南( 含多場景適配與踩坑總結 )

目錄 前言 一、準備工作 1.1 開發環境搭建 1.1.1 環境安裝 1.1.2 配置問題 1.2 賬號注冊 1.2.1 賬號注冊(兩種方式) 1.2.2 登錄驗證 1.2.3 個人設置 1.2.4 安全配置 1.3 初始配置 1.3.1 初始項目目錄 1.3.2 關鍵字段詳解 1.3.3 手動完善 二…

BERT中文預訓練模型介紹

bert-base-chinese 是由谷歌基于 BERT(Bidirectional Encoder Representations from Transformers)模型預訓練得到的適用于中文任務的模型版本。以下從多個方面對其進行詳細解釋: 模型概述 BERT 是一種基于 Transformer 架構的預訓練語言模型…

Archon01-項目部署

Archon01-項目部署當前已經參考B站視頻針對代碼進行修改,可直接使用BigModel智譜的GLM-4.5替換openAI進行使用,部署環境(Python3.12-slim環境)1-核心知識點關鍵字: Docker Supabase Archon BigModel Python1&#xff0…

HarmonyOS時間戳完全指南:DevEco Studio中的時間處理與實戰應用

時間戳是現代應用開發中不可或缺的基礎功能,無論是日志記錄、數據同步、緩存管理還是狀態追蹤都離不開時間戳的支持。本文將深入探討在DevEco Studio中如何處理和使用時間戳,并提供豐富的實戰示例。一、時間戳基礎概念什么是時間戳?時間戳&am…

論文筆記:On the Biology of a Large Language Model

《關于大型語言模型的生物學》(On the Biology of a Large Language Model)的文章,深入探究了 Anthropic 公司 Claude 3.5 Haiku 模型的內部工作機制。研究人員將理解語言模型比作生物學研究,旨在揭示其復雜行為背后的“神經回路”…

TCP/IP、HTTP 和 HTTPS簡介

我們來系統地介紹一下 TCP/IP、HTTP 和 HTTPS。它們之間的關系可以概括為:??HTTP 和 HTTPS 是運行在 TCP/IP 基礎網絡架構之上的具體應用協議??。為了更直觀地理解它們之間的關系,我們可以參考下面的網絡分層模型:flowchart TDsubgraph A…

【30】C#實戰篇——獲取路徑下的文件名(不包含路徑和擴展名),文件名由連續的數字編號+連續的字母編號組成,并分離出文件名數字部分和英文部分

文章目錄1 要求2 分析 與 實現1 要求 寫一個函數,獲取路徑下的文件名(不包含路徑和擴展名),并分離出文件名fileName ,文件名編號SN,文件名前綴WMT ; 輸入文件路徑,解析出不帶"…

EasyExcel部署Docker缺少字體報錯

報文 java.lang.NullPointerException: nullat sun.awt.FontConfiguration.getVersion(FontConfiguration.java:1264)at sun.awt.FontConfiguration.readFontConfigFile(FontConfiguration.java:219)at sun.awt.FontConfiguration.init(FontConfiguration.java:107)at sun.awt.…

從“收款工具”到“智能中樞”:AI如何重構POS系統的技術架構與商業價值?

引?:從交易終端到智能中樞的?字路? 在現代商業的繁忙圖景中 ,銷售點( Point of Sale, POS) 系統?期以來被視為交易流程的終點 ——?個簡單完成收款、打印票據的?具。然? ,這?認知正在被迅速顛覆。 隨著數字經濟的深 化 ,POS系統已演變為連接顧客、 商品與服務的…

unity以戰斗截圖并加上微信二維碼分享

開發游戲時,會遇到戰斗結算,成就等獎勵界面,鼓勵玩家分享到朋友圈,這時通常會在圖片上加上一些內容,比如游戲Logo,二維碼下載等內容。現在分享一下我制作游戲分享圖片的過程。第一步首先截圖,截…

新手向:實現驗證碼程序

本文將從零開始,通過一個簡單的驗證碼程序。即使你沒有任何編程基礎,也能跟著這篇文章一步步學習。第一章:Java開發環境搭建1.1 安裝JDK要開始Java編程,首先需要安裝Java開發工具包(JDK)。JDK是Java開發的核心環境,包含…

使用Flask實現接口回調地址

使用Flask實現接口回調地址 一、接口回調的基本概念 接口回調(Callback)是一種異步通信機制,當某個事件發生時(如支付完成、任務結束),服務提供方會主動調用預先配置的URL(即回調地址&#xff0…

vue2+jessibuca播放h265視頻

文檔地址&#xff1a;http://jessibuca.monibuca.com/api.html#background 1,文件放在public中 2,在html中引入 3&#xff0c;子組件 <template><div :id"container id"></div> </template><script> export default {props: [url,…

Behavioral Fingerprinting of Large Language Models

Behavioral Fingerprinting of Large Language Models Authors: Zehua Pei, Hui-Ling Zhen, Ying Zhang, Zhiyuan Yang, Xing Li, Xianzhi Yu, Mingxuan Yuan, Bei Yu Deep-Dive Summary: 行為指紋識別大型語言模型 摘要 當前的大型語言模型&#xff08;LLMs&#xff09;基…

某互聯網大廠的面試go語言從基礎到實戰的經驗和總結

### 一面 #### 1. **實習項目**- 可以簡要描述你的項目經歷&#xff0c;最好是與職位相關的項目。如果是與技術棧相關的項目&#xff0c;比如 Go、C、Golang 或 Python&#xff0c;重點講述項目中的技術細節和你如何解決問題。#### 2. **Go學習多久**- 說明你學習 Go 語言的時間…

掌握Java控制流:編程決策的藝術

控制流語句是用來 控制程序執行順序 的關鍵工具&#xff0c;它們允許你根據不同的條件執行不同的代碼塊&#xff0c;或者重復執行某段代碼。這使得程序能夠根據輸入和情況做出智能的決策&#xff0c;而不僅僅是線性的執行。1. 條件語句 (Conditional Statements)條件語句允許你…