48、Spring Boot 詳細講義(五)

3、集成MyBatis

3.1 MyBatis 概述

3.1.1 核心功能和優勢

MyBatis 是一個 Java 持久層框架,它通過 XML 或注解配置 SQL 語句,將 Java 方法與 SQL 語句映射起來,消除了大量的 JDBC 代碼,簡化了數據庫操作。MyBatis 的核心功能和優勢包括:

  1. ORM(對象關系映射):通過 XML 配置文件或注解將 Java 對象與數據庫表映射,自動化對象數據與數據庫記錄之間的轉換。
  2. 動態 SQL:基于輸入參數動態生成 SQL 語句,靈活處理各種查詢條件。
  3. 代碼簡化:通過配置管理 SQL 語句,減少了手動編寫 JDBC 的代碼量。
  4. 跨數據庫支持:支持多種數據庫,如 MySQL、Oracle、PostgreSQL 等,提高了應用程序的可移植性。
  5. 與 Spring 集成:與 Spring 框架無縫集成,支持聲明式事務管理和依賴注入。
3.1.2 動態 SQL 功能

MyBatis 的動態 SQL 功能允許在運行時根據條件動態生成 SQL 語句。常用的動態 SQL 元素包括:

  • <if>:根據條件包含或排除某個 SQL 片段。
  • <choose>:類似于 if-else,根據條件選擇一個 SQL 片段。
  • <trim>:用于修飾周圍的內容,如去除多余的 AND 或 OR。
  • <foreach>:用于批量處理,遍歷集合參數。
  • <set>:用于更新語句,動態包含字段。

示例:

<select id="findUserByCondition" resultType="User">  SELECT * FROM users  <where>  <if test="username != null">  username LIKE '%'${username}'%'  </if>  <if test="email != null">  AND email = '${email}'  </if>  </where>  
</select>  

3.2 與 Spring Boot 集成

3.2.1 依賴和自動配置

在 Spring Boot 項目中集成 MyBatis,在pom.xml文件中添加Mybatis,Spring web 等相關依賴

<!--lombok-->
<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.22</version>
</dependency><!--mysql-->
<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.28</version>
</dependency><!--mybatis-->
<dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.1.4</version>
</dependency><!--druid-->
<dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.1.21</version>
</dependency><!-- spring web 需要的包 -->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId>
</dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-tomcat</artifactId><scope>provided</scope>
</dependency>
3.2.2 創建映射文件

MyBatis 的 SQL 映射文件需要放置在 src/main/resources 目錄下,具體路徑與包結構對應。例如:在resources目錄下創建一個mapper文件夾,用來存儲所有的mapper.xml文件

src/main/resources/  └── mapper  └── UserMapper.xml  
3.2.3 @Mapper 接口和掃描

在 Spring Boot 中,可以通過 @Mapper 注解標記 Mapper 接口,或者通過 @MapperScan 掃描指定包下的所有 Mapper 接口。

  1. 使用 @Mapper 注解
@Mapper  
public interface UserMapper {  List<User> findAllUsers();  User findUserById(Long id);  void insertUser(User user);  
}  
  1. 配置 @MapperScan

    在入口類上添加注解

@SpringBootApplication  
@MapperScan("com.example.mybatis.mapper")  
public class MyBatisApp {  public static void main(String[] args) {  SpringApplication.run

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

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

相關文章

BERT - Bert模型框架復現

本節將實現一個基于Transformer架構的BERT模型。 1. MultiHeadAttention 類 這個類實現了多頭自注意力機制&#xff08;Multi-Head Self-Attention&#xff09;&#xff0c;是Transformer架構的核心部分。 在前幾篇文章中均有講解&#xff0c;直接上代碼 class MultiHeadAtt…

解決 Spring Boot 啟動報錯:數據源配置引發的啟動失敗

啟動項目時&#xff0c;控制臺輸出了如下錯誤信息&#xff1a; Error starting ApplicationContext. To display the condition evaluation report re-run your application with debug enabled. 2025-04-14 21:13:33.005 [main] ERROR o.s.b.d.LoggingFailureAnalysisReporte…

履帶小車+六軸機械臂(2)

本次介紹原理圖部分 開發板部分&#xff0c;電源供電部分&#xff0c;六路舵機&#xff0c;PS2手柄接收器&#xff0c;HC-05藍牙模塊&#xff0c;蜂鳴器&#xff0c;串口&#xff0c;TB6612電機驅動模塊&#xff0c;LDO線性穩壓電路&#xff0c;按鍵部分 1、開發板部分 需要注…

【開發記錄】服務外包大賽記錄

參加服務外包大賽的A07賽道中&#xff0c;最近因為頻繁的DEBUG&#xff0c;心態爆炸 記錄錯誤 以防止再次出現錯誤浪費時間。。。 2025.4.13 項目在上傳圖片之后 會自動刷新 沒有等待后端返回 Network中的fetch /upload顯示canceled. 然而這是使用了VS的live Server插件才這樣&…

基于FreeRTOS和LVGL的多功能低功耗智能手表(硬件篇)

目錄 一、簡介 二、板子構成 三、核心板 3.1 MCU最小系統板電路 3.2 電源電路 3.3 LCD電路 3.4 EEPROM電路 3.5 硬件看門狗電路 四、背板 4.1 傳感器電路 4.2 充電盤 4.3 藍牙模塊電路 五、總結 一、簡介 本篇開始介紹這個項目的硬件部分&#xff0c;從最小電路設…

為 Kubernetes 提供智能的 LLM 推理路由:Gateway API Inference Extension 深度解析

現代生成式 AI 和大語言模型&#xff08;LLM&#xff09;服務給 Kubernetes 帶來了獨特的流量路由挑戰。與典型的短時、無狀態 Web 請求不同&#xff0c;LLM 推理會話通常是長時運行、資源密集且部分有狀態的。例如&#xff0c;一個基于 GPU 的模型服務器可能同時維護多個活躍的…

MacOs下解決遠程終端內容復制并到本地粘貼板

常常需要在服務器上搗鼓東西&#xff0c;同時需要將內容復制到本地的需求。 1-內容是在遠程終端用vim打開&#xff0c;如何用vim的類似指令達到快速復制到本地呢&#xff1f; 假設待復制的內容&#xff1a; #include <iostream> #include <cstring> using names…

STM32 vs ESP32:如何選擇最適合你的單片機?

引言 在嵌入式開發中&#xff0c;STM32 和 ESP32 是兩種最熱門的微控制器方案。但許多開發者面對項目選型時仍會感到困惑&#xff1a;到底是選擇功能強大的 STM32&#xff0c;還是集成無線的 ESP32&#xff1f; 本文將通過 硬件資源、開發場景、成本分析 等多維度對比&#xf…

【blender小技巧】Blender導出帶貼圖的FBX模型,并在unity中提取材質模型使用

前言 這其實是我之前做過的操作&#xff0c;我只是單獨提取出來了而已。感興趣可以去看看&#xff1a;【blender小技巧】使用Blender將VRM或者其他模型轉化為FBX模型&#xff0c;并在unity使用&#xff0c;導出帶貼圖的FBX模型&#xff0c;貼圖材質問題修復 一、導出帶貼圖的…

如何保證本地緩存和redis的一致性

1. Cache Aside Pattern&#xff08;旁路緩存模式&#xff09;?? ?核心思想?&#xff1a;應用代碼直接管理緩存與數據的同步&#xff0c;分為讀寫兩個流程&#xff1a; ?讀取數據?&#xff1a; 先查本地緩存&#xff08;如 Guava Cache&#xff09;。若本地未命中&…

k8s通過service標簽實現藍綠發布

k8s通過service標簽實現藍綠發布 通過k8s service label標簽實現藍綠發布方法1:使用kubelet完成藍綠切換1. 創建綠色版本1.1 創建綠色版本 Deployment1.2 創建綠色版本 Service 2. 創建藍色版本2.1 創建藍色版本 Deployment2.2 創建藍色版本 Service 3. 創建藍綠切換SVC (用于外…

智慧酒店企業站官網-前端靜態網站模板【前端練習項目】

最近又寫了一個靜態網站&#xff0c;智慧酒店宣傳官網。 使用的技術 html css js 。 特別適合編程學習者進行網頁制作和前端開發的實踐。 項目包含七個核心模塊&#xff1a;首頁、整體解決方案、優勢、全國案例、行業觀點、合作加盟、關于我們。 通過該項目&#xff0c;小伙伴們…

Epplus 8+ 許可證設置

Epplus 8 之后非商業許可證的設置變了如果還用普通的方法會報錯 Unhandled exception. OfficeOpenXml.LicenseContextPropertyObsoleteException: Please use the static ‘ExcelPackage.License’ property to set the required license information from EPPlus 8 and later …

CST1016.基于Spring Boot+Vue高校競賽管理系統

計算機/JAVA畢業設計 【CST1016.基于Spring BootVue高校競賽管理系統】 【項目介紹】 高校競賽管理系統&#xff0c;基于 DeepSeek Spring AI Spring Boot Vue 實現&#xff0c;功能豐富、界面精美 【業務模塊】 系統共有兩類用戶&#xff0c;分別是學生用戶和管理員用戶&a…

2025年第十六屆藍橋杯省賽C++ 研究生組真題

2025年第十六屆藍橋杯省賽C 研究生組真題 1.說明2.題目A&#xff1a;數位倍數&#xff08;5分&#xff09;3.題目B&#xff1a;IPv6&#xff08;5分&#xff09;4.題目C&#xff1a;變換數組&#xff08;10分&#xff09;5.題目D&#xff1a;最大數字&#xff08;10分&#xff…

空調開機啟動后發出噼里啪啦的異響分析與解決

背景 當空調使用時由于制冷或制熱運轉時&#xff08;關機后可能也會出現&#xff09;&#xff0c;塑料件熱脹冷縮引起&#xff0c;可能會出現“咔咔”的聲音&#xff1b;空調冷媒在空調內管路流動時會出現輕微的“沙沙”的聲音&#xff1b;也有可能是新裝的空調擺風軸出現響聲…

BERT、T5、ViT 和 GPT-3 架構概述及代表性應用

BERT、T5、ViT 和 GPT-3 架構概述 1. BERT&#xff08;Bidirectional Encoder Representations from Transformers&#xff09; 架構特點 基于 Transformer 編碼器&#xff1a;BERT 使用多層雙向 Transformer 編碼器&#xff0c;能夠同時捕捉輸入序列中每個詞的左右上下文信息…

選導師原理

總述 一句話總結&#xff1a;是雷一定要避&#xff0c;好的一定要搶。方向契合最好&#xff0c;不契合適當取舍。 首先明確自身需求&#xff1a; 我要學東西&#xff01;青年導師&#xff0c;好溝通&#xff0c;有沖勁&#xff0c;高壓力。 我要擺爛&#xff01;中老年男性教…

【過程控制系統】PID算式實現,控制系統分類,工程應用中控制系統應該注意的問題

目錄 1-1 試簡述過程控制的發展概況及各個階段的主要特點。 1-2 與其它自動控制相比&#xff0c;過程控制有哪些優點&#xff1f;為什么說過程控制的控制過程多屬慢過程&#xff1f; 1-3 什么是過程控制系統&#xff0c;其基本分類是什么&#xff1f; 1-4 何為集散控制系統…

2025年第十六屆藍橋杯省賽真題解析 Java B組(簡單經驗分享)

之前一年拿了國二后&#xff0c;基本就沒刷過題了&#xff0c;實力掉了好多&#xff0c;這次參賽只是為了學校的加分水水而已&#xff0c;希望能拿個省三吧 >_< 目錄 1. 逃離高塔思路代碼 2. 消失的藍寶思路代碼 3. 電池分組思路代碼 4. 魔法科考試思路代碼 5. 爆破思路…