SpringBoot查詢方式全解析

文章目錄

  • 一、簡介
  • 二、常用注解分類
    • 1、請求映射類(處理 URL 與 HTTP 方法的綁定)
    • 2、參數綁定類(從請求中獲取數據并綁定到方法參數)
    • 3、控制器與增強類(標識控制器及全局增強)
    • 4、異常與響應處理類(處理接口異常和響應狀態)
    • 5、數據模型與會話類(處理模型數據和會話存儲)
    • 6、其他輔助類
  • 三、查詢方式寫法
    • 1、路徑變量
    • 2、查詢變量
    • 3、實體類參數
  • 四、其它Springboot擴展參數

一、簡介

在 HTTP 協議的規范中,請求方法與資源操作有著明確的對應關系:GET 和 POST 是其中用于查詢請求的常見方式,而除此之外,POST、DELETE、PUT 還分別對應著資源的新增、刪除和修改操作。?
其中,GET 方法的設計初衷是 “只查不改”—— 無論執行多少次,它的作用僅僅是獲取服務器上的資源,不會對資源本身產生任何修改。這種特性帶來了兩大優勢:一是可緩存性,瀏覽器或代理服務器可以緩存 GET 請求的結果,從而提升后續訪問的效率;二是可重復執行性,多次發起相同的 GET 請求,得到的結果始終一致,也不會引發意外的副作用。這兩點共同決定了 GET 方法不適合用于修改操作。?

而在 Spring Boot 框架中,GET 方法成為了獲取資源的首選方式,尤其適用于查詢場景、參數可公開、具備冪等性(多次操作結果一致)且需要緩存的業務需求。不過在使用時,需要特別注意兩個要點:一是 URL 存在長度限制,過長的參數可能導致請求失敗;二是參數的安全性,由于 GET 請求的參數會暴露在 URL 中,因此要避免傳遞敏感數據,更不能用它來執行修改服務器狀態的操作。

二、常用注解分類

1、請求映射類(處理 URL 與 HTTP 方法的綁定)

核心是將 HTTP 請求映射到控制器方法,通過 “路徑 + HTTP 方法” 定位接口。

  • 基礎注解:@RequestMapping(最底層,可指定路徑、請求方法、參數等)。
  • 衍生注解:@GetMapping(限定 GET 方法)、@PostMapping(POST)、@PutMapping(PUT)、@DeleteMapping(DELETE)、@PatchMapping(PATCH)。

其中衍生注解是@RequestMapping的簡化版,如@GetMapping = @RequestMapping(method = RequestMethod.GET))

2、參數綁定類(從請求中獲取數據并綁定到方法參數)

核心是從 HTTP 請求的不同位置(路徑、查詢參數、請求體等)提取數據,綁定到控制器方法的參數上。

  • 路徑參數:@PathVariable(獲取 URL 路徑中的占位符,如/users/{id}中的id)。
  • 查詢參數:@RequestParam(獲取 URL 中?key=value形式的參數)。
  • 請求體:@RequestBody(獲取 HTTP 請求體中的數據,通常是 JSON/XML,用于 POST/PUT 等)。
  • 請求頭 / Cookie:@RequestHeader(獲取請求頭信息,如User-Agent)、@CookieValue(獲取 Cookie 值)。
  • 特殊參數:@MatrixVariable(獲取 URL 中;分隔的矩陣變量,如/books;author=魯迅)、@RequestPart(獲取multipart/form-data類型的數據,如文件上傳)。
  • 域對象:@RequestAttribute(獲取請求域request中的屬性)、@SessionAttribute(獲取會話域session中的屬性)。
    共性:都用于 “從請求中拿數據”,區別僅在于數據在請求中的位置(路徑、查詢串、請求體等)。

3、控制器與增強類(標識控制器及全局增強)

核心是標識控制器類,或對控制器進行全局增強(如異常處理、數據預處理)。

  • 基礎控制器:@RestController(= @Controller + @ResponseBody,標識 REST 接口控制器,返回值直接作為響應體)。
  • 全局增強:@ControllerAdvice(全局控制器增強,用于集中處理異常、全局數據綁定等)、@RestControllerAdvice(= @ControllerAdvice + @ResponseBody,增強 REST 接口,異常處理返回 JSON)。

4、異常與響應處理類(處理接口異常和響應狀態)

核心是控制接口的異常處理和 HTTP 響應狀態。

  • 異常處理:@ExceptionHandler(處理控制器方法拋出的異常,結合@ControllerAdvice實現全局異常處理)。
  • 響應狀態:@ResponseStatus(指定接口或異常處理返回的 HTTP 狀態碼,如 404、500)。

5、數據模型與會話類(處理模型數據和會話存儲)

核心是管理請求 / 會話中的數據,或綁定模型數據。

  • 模型數據:@ModelAttribute(向模型中添加數據,或綁定請求參數到模型對象)。
  • 會話存儲:@SessionAttributes(指定模型中的哪些屬性存入會話域,作用于類)、@SessionAttribute(從會話域中獲取屬性,作用于參數)。

6、其他輔助類

  • 跨域處理:@CrossOrigin(解決跨域請求問題,指定允許的來源、方法等)。
  • 數據綁定初始化:@InitBinder(自定義請求參數的綁定規則,如日期格式化、類型轉換)。
  • 基礎父注解:@Mapping(所有請求映射注解的父注解,定義路徑映射的基本屬性)。

三、查詢方式寫法

1、路徑變量

路徑:/forlan/entity/query/{param1}

單個參數寫法

@GetMapping("/forlan/entity/query/{param1}")
public Result<List<ForlanVO>> queryList(@PathVariable("param1") Long param1)@GetMapping ("/forlan/entity/query/{param1}")
public Result<List<ForlanVO>> queryList(Long param1)

多個參數,必須加上@PathVariable

@GetMapping ("/forlan/entity/query/{param1}/{param2}")
public Result<List<ForlanVO>> queryList(
@PathVariable("param1") Long param1,
@PathVariable("param2") Long param2
)

2、查詢變量

路徑:/forlan/entity/filter?param1=xxx&param2=yyy

@GetMapping("/forlan/entity/filter")
public Result<List<ForlanVO>> filterList(Long param1, Long param2)

基礎類型參數可省略 @RequestParam,如需配置默認值或必填項則需添加

@GetMapping ("/forlan/entity/filter")
public Result<List<ForlanVO>> filterList(
@RequestParam(required = false, defaultValue = "0") Integer page,
@RequestParam List<Long> ids
)

注意:集合類型參數必須添加 @RequestParam,否則會出現異常:No primary or default constructor found for interface java.util.List
原因:Spring MVC 嘗試實例化接口類型(List)時無法找到合適的構造器,需通過 @RequestParam 明確指定參數綁定方式

3、實體類參數

默認接收 form-data 格式參數

@PostMapping("/forlan/entity/search")
public Result<List<ForlanVO>> searchList (ForlanDTO dto)

如需接收 JSON 格式參數,需添加 @RequestBody

@PostMapping ("/forlan/entity/search")
public Result<List<ForlanVO>> searchList(@RequestBody ForlanDTO dto)

四、其它Springboot擴展參數

@JsonAlias(“xxx”):為字段提供一個或多個反序列化時的別名,適合兼容舊字段名或不同命名風格

示例:前端傳forlan或Forlan都能接收到參數

@JsonAlias("forlan")
private String Forlan;

@JsonProperty(“xxx”):定義序列化/反序列化時使用的主屬性名
序列化:Java 對象 → JSON 響應/文件
反序列化:JSON 請求/文件 → Java 對象

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/92789.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/92789.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/92789.shtml

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

相關文章

Linux操作系統從入門到實戰(十五)詳細講解Linux調試器 gdb/cgdb使用

Linux操作系統從入門到實戰&#xff08;十五&#xff09;詳細講解Linux調試器 gdb/cgdb使用前言一、gdb/cgdb是什么&#xff1f;1. 程序的兩種發布模式&#xff08;debug 和 release&#xff09;二、gdb/cgdb如何啟動&#xff1f;1. 準備工作2. 啟動 gdb/cgdb 調試器2.1 啟動 g…

基于UDP的代理協議的Tuic怎么樣?

Tuic&#xff08;全稱“TUIClient”&#xff09;是一款基于UDP協議的輕量代理工具&#xff0c;主打低延遲與高實時性&#xff0c;專為解決傳統TCP代理在實時場景中的性能瓶頸而生。其核心設計圍繞“UDP優先”展開&#xff0c;通過簡化握手流程、優化加密效率&#xff0c;在保持…

緩存投毒進階 -- justctf 2025 Busy Traffic

題目核心邏輯如下 let browser; // 全局瀏覽器實例// 訪問指定 URL 的異步函數 const visit async (url) > {try {// 如果已有瀏覽器實例&#xff0c;先關閉并等待 2 秒if (browser) {await browser.close();await sleep(2000);console.log("Terminated ongoing job.&…

復刻蘇寧易購(移動端)

html代碼<!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title><link rel"s…

Scrapy返回200但無數據?可能是Cookies或Session問題

引言 在使用Scrapy框架進行網頁爬取時&#xff0c;開發者可能會遇到一個常見但令人困惑的問題&#xff1a;HTTP請求返回狀態碼200&#xff08;表示成功&#xff09;&#xff0c;但實際獲取的數據卻是空的。這種情況通常意味著目標服務器接受了請求&#xff0c;但由于某些原因沒…

【gateway nc adapter虛擬網卡 win11 聯想】問題的解決

前言&#xff1a;由于需要登錄公司內網&#xff0c;于是啟用奇安信VPN。但啟動后報出網關未連接的問題&#xff0c;于是我檢查了我的網絡適配器&#xff0c;并嘗試解決&#xff0c;以下給出幾種我實踐過程中的行動&#xff0c;并附帶最后成功的解決方法 【gateway nc adapter虛…

基于開源AI智能名片鏈動2+1模式S2B2C商城小程序的運營策略創新研究

摘要&#xff1a;在數字化商業生態快速演進的背景下&#xff0c;傳統運營模式面臨用戶增長乏力、轉化效率低下等挑戰。本文以開源AI智能名片鏈動21模式與S2B2C商城小程序的深度融合為研究對象&#xff0c;提出通過周期化運營規劃、關鍵節點策略設計、跨部門協同創新、數據驅動決…

smart-water表設計方案

-- -- 2. SOP 管理模塊 -- -- 2.1 SOP主表 (存儲SOP元數據&#xff0c;與版本分離) CREATE TABLE sops (id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),name VARCHAR(255) NOT NULL,description TEXT,latest_published_version_id UUID, -- 外鍵約束在版本表創建后添加crea…

A4.0:繼C5.2的BJT理論引申的開關作用的應用示例

在C5里知道了BJT的靜態工作點Q的計算方式&#xff08;IC和VCE的負載線&#xff09;&#xff0c;以及偏置電阻RB&#xff0c;得到了電流IB&#xff0c;進而通過電流增益hFE得到了IC(IC β*IB)&#xff0c;然后VCE VCC - IC*RC&#xff0c;即集電極和發射極之間的電壓等于集電極…

平板探測器的主要技術指標

平板探測器(Flat-panel-detector,FPD)是一種廣泛應用于醫學影像學(如X射線、CT掃描等)、工業無損檢測和科學研究中的成像設備。其主要技術指標包括以下幾個方面: 1.空間分辨率(SpatialResolution) 定義:空間分辨率是指平板探測器能清晰分辨圖像中細節的能力。一般以…

從蘇州姑蘇區人工智能大模型基礎設施招標|學習參數5:單顆 AI 處理器的內存帶寬如何達到 1600GB/s

招標參數5:配置≥8 個AI 處理器,支持OAM式集成服務器形式。單個 AI 處理器支持≥370TFLOPS@FP16或 80TFLOPS@FP32 算力,支持≥64GB HBM高帶寬內存,單個AI處理器內存帶寬≥1600GBps 單張卡算力及內存帶寬參考如下NVIDIA算力表 H3C R4900 G5:支持多達 32 個 DDR4 內存,速率…

【機器學習深度學習】Embedding 模型詳解:從基礎原理到實際應用場景

目錄 前言 一、Embedding 模型基礎&#xff1a;文本到向量的“魔術師” 1.1 什么是 Embedding&#xff1f; 1.2 為什么需要 Embedding&#xff1f; 二、核心作用與優勢&#xff1a;語義分析的“利刃” 三、工作原理拆解&#xff1a;從訓練到應用的完整鏈條 3.1 訓練階段…

防御保護10

雙機熱備組網配置主備備份組網1、配置ip地址2、配置安全區域3、ospf配置4、配置雙機熱備5、安全策略hrp adjust ospf-cost enable --- 配置根據VGMP狀態調整OSPF Cost值如果防火墻下行設備為三層設備&#xff0c;通過路由來引導流量&#xff0c;則需要配置上述命令&#xff1b;…

Python爬蟲實戰:研究meshio庫,構建網格文件數據采集系統

一、引言 (一)研究背景 在有限元分析、計算流體力學(CFD)、計算機輔助設計(CAD)等領域,網格文件是描述幾何模型離散化信息的基礎數據載體,包含節點坐標、單元連接關系、物理屬性等關鍵信息。目前,網格文件格式多達數十種(如 VTK、STL、OBJ、ANSYS CDB 等),且分散…

編程基礎之字符串——統計數字字符個數

題目&#xff1a; 輸入一行字符&#xff0c;統計出其中數字字符的個數。 輸入&#xff1a; 一行字符串&#xff0c;總長度不超過255。 輸出&#xff1a; 輸出為1行&#xff0c;輸出字符串里面數字字符的個數。 樣例輸入&#xff1a; Peking University is set up at 1898. 樣…

Openlayers基礎教程|從前端框架到GIS開發系列課程(19)地圖控件和矢量圖形繪制

1. 地圖控件本篇教程主要介紹以下地圖控件&#xff1a;視圖跳轉控件放大縮小控件全屏控件實現步驟1. 初始化地圖上一篇已經介紹了&#xff0c;這一篇直接跳過該步驟。2. 視圖跳轉控件/* 視圖跳轉控件 */const ZoomToExtent new ol.control.ZoomToExtent({ extent: [110, 30, …

A#語言詳解

A#語言詳解&#xff1a;連接Ada與.NET的安全編程語言一、引言&#xff1a;A#的定義與起源A#&#xff08;A Sharp&#xff09;是一種基于.NET框架的編程語言&#xff0c;其設計目標是將Ada語言的安全性、可靠性與.NET生態系統的跨平臺能力、組件化特性相結合。它由美國程序員Mic…

2025華數杯比賽還未完全結束!數模論文可以發表期刊會議

2025華數杯比賽還未完全結束&#xff01; 數模論文可以發表期刊會議數學建模論文轉化為可發表的期刊/會議論文&#xff0c;可以在保持實驗數據和結果不變的前提下&#xff0c;對論文結構、表述方式和學術規范進行系統性調整&#xff0c;然后進行投稿。 這不僅能讓你的研究成果被…