SpringBoot后端開發知識點總結(持續更新)

目錄

  • 1. 常用易混淆注解解釋
    • 1.1 @Resource和@Autowired注解的區別
    • 1.2 @PathVariable和@RequestParam注解的區別
  • 2. Mybatis-Plus高級特性
    • 2.1 強大的通用CRUD接口
    • 2.2 代碼生成器
  • 3. IDEA實用快捷鍵
  • 4. 前后端聯調關鍵點
    • 4.1 代碼示例
    • 4.2 聯調要點
    • 4.3 調試技巧

1. 常用易混淆注解解釋

1.1 @Resource和@Autowired注解的區別

在Spring框架中,@Resource@Autowired都是用于依賴注入的注解,但有以下關鍵區別:

特性@Autowired@Resource
來源Spring框架Java標準(JSR-250)
注入方式默認按類型(byType)默認按名稱(byName)
必需性默認必須(可設required=false)非必須
指定名稱需配合@Qualifier直接使用name屬性
構造函數注入支持不支持
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import javax.annotation.Resource;// 服務接口
interface PaymentService {void pay();
}// 實現類1
@Service("wechatPay")
class WechatPay implements PaymentService {public void pay() {System.out.println("微信支付");}
}// 實現類2
@Service("aliPay")
class AliPay implements PaymentService {public void pay() {System.out.println("支付寶支付");}
}// 客戶端類
@Service
class ShoppingCart {/* 最常用場景對比 */// 1. 按類型注入(默認方式)@Autowired  // Spring方式:存在多個實現時會報錯private PaymentService typeInjectedService;@Resource   // Java標準方式:會退化成按名稱注入(變量名作為bean名稱)private PaymentService resourceInjectedService;// 2. 按名稱注入(解決多個實現問題)@Autowired@Qualifier("wechatPay")  // Spring方式:需要兩個注解private PaymentService qualifiedService;@Resource(name = "aliPay")  // Java標準方式:一個注解搞定private PaymentService namedResourceService;// 3. 構造函數注入(推薦方式)private final PaymentService constructorInjected;@Autowired  // 唯一支持構造器注入的方式(Spring 4.3+可省略)public ShoppingCart(PaymentService constructorInjected) {this.constructorInjected = constructorInjected;}/* 實際使用示例 */public void checkout(int paymentType) {switch(paymentType) {case 1:qualifiedService.pay();    // 明確使用微信支付break;case 2:namedResourceService.pay(); // 明確使用支付寶break;default:constructorInjected.pay(); // 使用默認注入的實現}}
}

1.2 @PathVariable和@RequestParam注解的區別

這兩個注解都用于從HTTP請求中獲取參數,但使用場景不同:

特性@PathVariable@RequestParam
參數位置URL路徑部分URL查詢字符串
示例URL/user/{id}/user?id=123
是否必需默認必需可選(可設required=false)
多值處理不支持支持(數組/集合)
// @PathVariable 示例
@GetMapping("/users/{userId}")
public User getUser(@PathVariable String userId) {// ...
}// @RequestParam 示例
@GetMapping("/users")
public User getUser(@RequestParam(required = false) String name) {// ...
}

2. Mybatis-Plus高級特性

Mybatis-Plus在Mybatis基礎上提供了諸多便利功能:

2.1 強大的通用CRUD接口

內置通用Mapper,無需編寫簡單SQL

分類方法示例說明
插入insert(T entity)插入一條記錄
刪除deleteById(Serializable id)根據ID刪除
deleteBatchIds()批量刪除(根據ID集合)
更新updateById(T entity)根據ID更新
update(entity, wrapper)根據條件更新
查詢selectById()根據ID查詢
selectOne()查詢一條記錄(結果多條會報錯)
selectList()查詢列表
selectCount()查詢總數
分頁selectPage()分頁查詢

2.2 代碼生成器

一鍵生成Entity、Mapper、Service等

在這里插入圖片描述

3. IDEA實用快捷鍵

功能Windows快捷鍵
全局搜索Double Shift
當前文件查找Ctrl+F
在所有文件/模塊/文件夾查找Ctrl+Alt+F
代碼格式化Ctrl+Alt+L
重寫方法Ctrl+O
重寫/實現方法Ctrl+I
AI智能補全Tab
輸入表達式后使用此后綴快速生成變量.var

4. 前后端聯調關鍵點

4.1 代碼示例

// 正確示例 - 參數名與后端一致
methods: {deleteInterviewer(interviewerId) {...}).then(() => {var params = {interviewerId: interviewerId}
deleteInterviewer: function(params) {return instance({url: '/interviewer/delete',method: 'delete',params: params})
}

后端接口:

@DeleteMapping("/delete")
public Result delete(@RequestParam String interviewerId) {// 參數名必須與前端一致service.delete(interviewerId);return Result.ok();
}

4.2 聯調要點

  1. 命名一致性:前后端參數名嚴格一致
  2. 請求方式匹配
    • GET - 查詢
    • POST - 創建
    • PUT - 更新
    • DELETE - 刪除
  3. 數據格式
    • 明確約定JSON字段命名風格(駝峰/下劃線)
    • 日期格式統一(如yyyy-MM-dd HH:mm:ss)

4.3 調試技巧

使用Postman測試接口

在這里插入圖片描述

開啟SpringBoot的SQL日志:

mybatis-plus:configuration:log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

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

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

相關文章

電腦商城--用戶收貨管理

新增收貨地址 1 新增收貨地址-創建數據表 1.使用use命令先選中store數據庫。 USE store; 2.在store數據庫中創建t_address用戶數據表。 CREATE TABLE t_address (aid INT AUTO_INCREMENT COMMENT 收貨地址id,uid INT COMMENT 歸屬的用戶id,name VARCHAR(20) COMMENT 收貨人姓…

開發者避坑:接入Flux-Kontext API實現文生圖、圖生圖功能

在數字化浪潮背景下,人工智能(Artificial Intelligence, AI)技術正加速重塑圖像創作領域。智創聚合API平臺近日宣布整合Flux-Kontext系列模型,通過API接口支持圖生圖和文生圖功能,為開發者及創作者提供高效解決方案。此…

.Net Core 獲取與bin目錄相同文件路徑的文件

在 .NET Core 中,您可以使用以下方法來獲取與 bin 目錄相同的文件路徑。通常,bin 目錄是應用程序編譯后生成的輸出目錄,您可以使用 AppContext.BaseDirectory 或 Directory.GetCurrentDirectory() 來獲取該目錄的路徑。 以下是一些常用的方法…

RN(React Native)技術應用中常出現的錯誤及解決辦法

React Native 作為跨平臺開發框架,在實際應用中可能會遇到一些常見的錯誤。以下是React Native 技術應用中常出現的錯誤及解決辦法: 1. 網絡請求失敗(Network Request Failed) 原因: 請求地址不正確網絡權限未配置i…

Java 21 的虛擬線程與橋接模式:構建高性能并發系統

Java 21 的虛擬線程與橋接模式:構建高性能并發系統 🌟 嗨,我是IRpickstars! 🌌 總有一行代碼,能點亮萬千星辰。 🔍 在技術的宇宙中,我愿做永不停歇的探索者。 ? 用代碼丈量世界&…

HTML5 火焰字體效果教程

HTML5 火焰字體效果教程 這里寫目錄標題 HTML5 火焰字體效果教程前言項目概述基本原理項目結構詳細實現步驟1. HTML結構2. CSS樣式3. JavaScript實現 代碼詳解1. 初始化設置2. 粒子系統3. 生成粒子4. 動畫循環5. 交互控制 擴展和優化建議總結完整代碼 前言 在這篇教程中&#…

SMOTE-XGBoost實戰:金融風控中欺詐檢測的樣本不平衡解決方案

1. 行業問題背景 (1)金融欺詐檢測的特殊性 在支付風控領域,樣本不平衡是核心痛點。Visa 2023年度報告顯示,全球信用卡欺詐率約為0.6%,但單筆欺詐交易平均損失高達$500。傳統機器學習模型在此場景下表現堪憂&#xff1…

Instagram下載保存 -下載狗解析工具

在日常瀏覽Instagram時,是否有過這樣的煩惱:看到一個精彩的視頻,想要保存下來,卻不知道如何操作?有時候我們會看到一些特別的旅行視頻、搞笑片段,甚至是喜歡的名人分享的內容,簡直是舍不得錯過。…

flink如何基于Pekko實現RPC調用

摘要 通過閱讀flink源碼,了解flink是如何基于Pekko實現遠程RPC調用的 Pekko實現遠程調用 Flink 的 RPC 框架底層是構建在 Pekko 的 actor 模型之上的,了解Pekko如何使用,對后續源碼的閱讀有幫助。 Apache Pekko(原為 Akka 的一…

Kafka節點注冊沖突問題分析與解決

一、核心錯誤分析 ERROR Error while creating ephemeral at /brokers/ids/1, node already exists and owner does not match org.apache.zookeeper.KeeperException$NodeExistsException: KeeperErrorCode NodeExists問題本質:ZooKeeper中已存在ID為1的broker節…

突破PPO訓練效率瓶頸!字節跳動提出T-PPO,推理LLM訓練速度提升2.5倍

突破PPO訓練效率瓶頸!字節跳動提出T-PPO,推理LLM訓練速度提升2.5倍 在大語言模型(LLM)通過長思維鏈(CoT)展現出強大推理能力的當下,強化學習(RL)作為關鍵技術卻面臨訓練…

【Python】dictionary

1 字典功能 字典是可變容器模型&#xff0c;且可存儲任意類型對象&#xff1b; 字典的每個鍵值對 <key: value> 用冒號 : 分割&#xff0c;每個對之間用逗號(,)分割&#xff0c;整個字典包括在花括號 {} 中 ,格式如下所示&#xff1a; d {key1 : value1, key2 : value…

【python】If 語句

1 使用if 進行條件判斷 1.1 檢查字符串是否相等 car bmw car BMW # FALSEcar bmw car.upper() BMW # true # 變小寫用方法&#xff1a;lower1.2 檢查字符串是否不相等 my_car yadeaif my_car ! Audi:print("Buy one! Buy one! Buy one!")1.3 比較數字 answe…

Knife4j 使用詳解

一、概述 Knife4j 是一款基于 Swagger 的開源 API 文檔工具&#xff0c;旨在為 Java 開發者提供更美觀、功能更強大的 API 文檔生成、展示和調試體驗。它是 Swagger-Bootstrap-UI 的升級版&#xff0c;通過增強 UI 界面和擴展功能&#xff0c;解決了原生 Swagger UI 界面簡陋、…

Java excel坐標計算

package com.common.base.util.excel;/*** excel 坐標計算*/ public class UtilExcelPosi {/*** deepseek生成 ExcelProperty(index UtilExcelPosi.pA)*/public final static int pA 0;public final static int pB 1;public final static int pC 2;public final static i…

【JavaWeb】Servlet+JSP 實現分頁功能

文章目錄 思路數據抽出功能設計 功能模塊工具類前端內容用戶端數據處理 思路 數據抽出 需要顯示的數據&#xff0c;查詢的數據抽出&#xff1b;進行分頁顯示&#xff0c;需要統計抽出的件數&#xff0c;然后根據頁面顯示尺寸調整顯示頁面內容&#xff1b; 功能設計 翻頁需要…

SpringBoot-準備工作-工程搭建

目錄 1.創建空項目 2.檢查項目jdk版本 3.檢查Maven的全局配置 4.配置項目的字符集 5.創建SpringBoot工程 1.創建空項目 2.檢查項目jdk版本 3.檢查Maven的全局配置 4.配置項目的字符集 5.創建SpringBoot工程

01、python實現matlab的插值算法,以及驗證

import numpy as np from scipy.interpolate import griddata import sys def griddata_wrapper(x, y, v, xq, yq, method): """ 包裝scipy的griddata函數,支持單個點或多個點的插值 """ try: # 將輸入轉換為numpy數組…

React ahooks——useRequest

目錄 簡介 1. 核心功能 2. 基本用法 3. 高級用法 &#xff08;1&#xff09;輪詢請求&#xff08;Polling&#xff09; &#xff08;2&#xff09;防抖&#xff08;Debounce&#xff09; &#xff08;3&#xff09;依賴刷新&#xff08;refreshDeps&#xff09; &#x…

re正則、Xpath、BeautifulSouplxml 區別

目錄 1. re 正則表達式2. XPath3. BeautifulSoup + lxml4. 功能特性對比5.對比與建議在網頁數據解析中,正則表達式(re)XPath(常結合lxml)BeautifulSoup(常依賴解析器如lxml)是三種主流技術,各有核心差異和適用場景。 1. re 正則表達式 優勢:文本匹配效率高,尤其適用于…