Spring Boot 2整合MyBatis Plus詳細指南

1. 環境準備

  • Spring Boot版本:2.x(推薦2.7.x)
  • MyBatis Plus版本:3.5.x(兼容Spring Boot 2)
  • 數據庫:MySQL 8.0+(其他數據庫需調整驅動)

2. 創建項目并添加依賴

pom.xml中添加核心依賴:

<dependencies><!-- Spring Boot Starter --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- MyBatis Plus Starter --><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.3.1</version></dependency><!-- 數據庫驅動(以MySQL為例) --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>runtime</scope></dependency><!-- Lombok簡化代碼 --><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency>
</dependencies>


3. 配置數據源與MyBatis Plus

application.yml中配置:

spring:datasource:url: jdbc:mysql://localhost:3306/test_db?useSSL=false&serverTimezone=UTCusername: rootpassword: 123456driver-class-name: com.mysql.cj.jdbc.Driver# MyBatis Plus配置
mybatis-plus:configuration:map-underscore-to-camel-case: true  # 開啟駝峰命名轉換global-config:db-config:id-type: auto  # 主鍵生成策略(數據庫自增)mapper-locations: classpath:mapper/*.xml  # XML映射文件路徑


4. 實體類與Mapper

(1) 實體類(使用Lombok簡化):

import lombok.Data;
import com.baomidou.mybatisplus.annotation.TableName;@Data
@TableName("user")  // 對應數據庫表名
public class User {private Long id;private String name;private Integer age;private String email;
}

(2) Mapper接口

import com.baomidou.mybatisplus.core.mapper.BaseMapper;public interface UserMapper extends BaseMapper<User> {// 繼承BaseMapper即擁有CRUD基礎方法
}

(3) 啟用Mapper掃描: 在啟動類添加@MapperScan注解:

@SpringBootApplication
@MapperScan("com.example.demo.mapper")  // 替換為實際Mapper包路徑
public class DemoApplication {public static void main(String[] args) {SpringApplication.run(DemoApplication.class, args);}
}


5. Service層與Controller層

(1) Service接口

public interface UserService extends IService<User> { }

(2) Service實現類

@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService { 
}

(3) Controller示例

@RestController
@RequestMapping("/user")
public class UserController {@Autowiredprivate UserService userService;@GetMapping("/{id}")public User getById(@PathVariable Long id) {return userService.getById(id);}@PostMappingpublic boolean save(@RequestBody User user) {return userService.save(user);}
}


6. 高級功能配置

(1) 分頁插件

@Configuration
public class MyBatisPlusConfig {@Beanpublic MybatisPlusInterceptor paginationInterceptor() {MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();interceptor.addInnerInterceptor(new PaginationInnerInterceptor());return interceptor;}
}

(2) 邏輯刪除配置: 在application.yml中啟用:

mybatis-plus:global-config:db-config:logic-delete-field: deleted  # 邏輯刪除字段名logic-delete-value: 1        # 刪除狀態值logic-not-delete-value: 0    # 未刪除狀態值


7. 測試驗證

使用@SpringBootTest進行單元測試:

@SpringBootTest
class UserMapperTest {@Autowiredprivate UserMapper userMapper;@Testvoid testSelect() {List<User> users = userMapper.selectList(null);users.forEach(System.out::println);}
}


8. 常見問題解決
  1. 數據庫連接失敗

    • 檢查spring.datasource配置
    • 確認MySQL服務已啟動
    • 添加&allowPublicKeyRetrieval=true到URL(MySQL 8.0+)
  2. Mapper掃描失敗

    • 確認@MapperScan路徑正確
    • 檢查Mapper接口是否添加@Repository@Mapper注解
  3. 字段映射錯誤

    • 開啟駝峰命名:map-underscore-to-camel-case: true
    • 使用@TableField指定字段名:
      @TableField("user_name")
      private String name;
      

通過以上步驟,即可完成Spring Boot 2與MyBatis Plus的整合,快速實現高效數據操作。

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

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

相關文章

Docker鏡像導入解析:docker import vs docker load

本文通過Busybox鏡像的實戰演示&#xff0c;深入剖析兩個易混淆命令的技術原理與適用場景一、核心區別速覽特性docker importdocker load輸入來源容器文件系統快照(docker export輸出)完整鏡像歸檔(docker save輸出)保留信息僅文件內容完整鏡像(層/歷史/配置/標簽)生成鏡像結構…

Android 解決鍵盤遮擋輸入框

本文目錄 點擊直達Android 解決鍵盤遮擋輸入框代碼實現使用注意最后我還有一句話要說梧桐葉上三更雨&#xff0c;葉葉聲聲是別離。Android 解決鍵盤遮擋輸入框 在安卓中通常可以通過添加android:windowSoftInputMode"adjustResize|stateHidden"的方式來讓鍵盤頂起布…

熱門JavaScript庫“is“等軟件包遭npm供應鏈攻擊植入后門

輕量級 JavaScript 實用工具庫 "is" 是 NPM 平臺上的熱門項目&#xff0c;每周下載量超過 220 萬次。然而在 2025 年 7 月 19 日&#xff0c;該庫開發者遭遇釣魚攻擊導致賬戶憑證泄露&#xff0c;攻擊者借此發布了包含遠程代碼執行后門的惡意版本。釣魚攻擊入侵開發者…

如何實現緩存音頻功能(App端詳解)

本方案提供了符合平臺規范的音頻緩存實現&#xff0c;通過分層設計確保功能可靠性&#xff0c;同時預留擴展點支持未來優化需求。&#x1f4e6; 音頻緩存與播放流程說明 項目目標 實現App端音頻資源的自動緩存與播放&#xff1a; 獲取遠程音頻URL下載文件至本地_downloads/目錄…

從零到一:Django圖書管理系統完整開發實戰指南

作者&#xff1a;笙囧同學 身份&#xff1a;中科院計算機大模型方向碩士 | 全棧開發愛好者 座右銘&#xff1a;偷懶是人生進步的階梯 聯系方式&#xff1a;3251736703qq.com 可接課設&#xff0c;論文&#xff0c;專利輔導 全平臺賬號&#xff1a;笙囧同學 &#x1f4d6; 前言 …

硬件電路設計(基本元器件)

一、電阻 1.電阻的基本概念 電阻是導體對電流阻礙作用的物理量&#xff0c;符號為R&#xff0c;單位為歐姆&#xff08;Ω&#xff09;。電阻的大小由導體的材料、長度、橫截面積和溫度共同決定。 電阻公式 導體的電阻R可通過以下公式計算&#xff1a; ρ&#xff1a;電阻率&…

R語言常用擴展包

R語言的強大之處很大程度上源于其豐富的擴展包&#xff08;Packages&#xff09;生態系統&#xff0c;目前CRAN&#xff08; Comprehensive R Archive Network&#xff09;上托管的擴展包已超過20,000個。以下是不同領域最常用的核心擴展包分類介紹&#xff1a; 一、數據處理與…

文件相關問題(AI回答)

一個進程打開一個文件&#xff0c;另一個進程能刪除這個文件嗎DeepSeek-R1 回答完成深度思考完成 用時10秒是的&#xff0c;?另一個進程可以刪除一個已被打開的文件?&#xff0c;但具體行為取決于操作系統和文件系統。以下是關鍵細節&#xff1a;1. ?Linux/Unix 的行為??刪…

三相四橋臂SVPWM控制及電機模型

三相四橋臂SVPWM控制策略及其在電機驅動中應用 一、三相四橋臂逆變器拓撲特性 1. 結構優勢 中性點控制&#xff1a;第四橋臂獨立調節中性點電壓&#xff0c;支持不平衡負載電壓利用率&#xff1a;相比傳統三橋臂提升15.47%&#xff0c;最大線電壓達U_{dc}硬件簡化&#xff1a;無…

deepseek+飛書多維表格 打造小紅書矩陣

通過AI技術平臺DeepSeek的數據分析與內容生成能力&#xff0c;結合飛書多維表格的智能化協作管理&#xff0c;實現小紅書矩陣賬號的高效運營。DeepSeek精準抓取熱點趨勢并生成爆款文案&#xff0c;飛書多維表格則提供可視化內容排期、多賬號數據看板及團隊任務分配功能&#xf…

4、如何生成分布式ID?

目錄 1、分布式ID介紹 什么是 ID&#xff1f; 什么是分布式 ID&#xff1f; 分布式 ID 需要滿足哪些要求? 2、分布式 ID 常見解決方案 1、數據庫 示例使用2&#xff1a; 2、數據庫號段模式 使用示例2&#xff1a; 一、核心設計思路 二、實現代碼 1. 數據庫表設計&…

Rust 實戰三 | HTTP 服務開發及 Web 框架推薦

往期回顧 Rust 實戰二 | 開發簡易版命令行工具 grepRust 實戰一 | 用 RustRover 開發猜數字游戲Rust 安裝與版本更新 代碼開源地址&#xff1a;https://github.com/0604hx/rust-journey &#x1f680; Web 框架 名稱性能&#xff08;QPS&#xff09;WebSocket / SSEGitHub ?…

墨者:SQL過濾字符后手工注入漏洞測試(第1題)

1. 墨者學院&#xff1a;SQL過濾字符后手工注入漏洞測試(第1題)&#x1f680; 2. 漏洞背景與測試思路&#x1f50d; 在Web安全測試中&#xff0c;當遇到對輸入字符有過濾的SQL注入漏洞時&#xff0c;我們需要使用特殊技巧繞過過濾機制。本次測試的目標URL存在字符過濾&#xff…

深入解析 Vue 3 中 v-model 與表單元素的綁定機制

v-model 是 Vue 中最強大的指令之一&#xff0c;它簡化了表單數據雙向綁定的實現。本文將系統梳理各種 HTML 表單元素與 v-model 的綁定關系&#xff0c;特別是那些容易引起困惑的類型。一、v-model 的本質v-model 是一個語法糖&#xff0c;它實際上是 :value 和 input 的組合&…

【趙渝強老師】MySQL中的數據庫對象

MySQL數據庫中包含各自數據庫對象&#xff0c;常見的數據庫對象有&#xff1a;表、索引、視圖、事件、存儲過程和存儲函數等等。 視頻講解如下 【趙渝強老師】MySQL中的數據庫對象一、 創建與管理表 表是一種非常重要的數據庫對象&#xff0c;MySQL數據庫的數據都是存儲在表中…

Angular面試題目和答案大全

基礎概念篇1. 什么是Angular&#xff1f;它與AngularJS有什么區別&#xff1f;答案&#xff1a; Angular是由Google開發的基于TypeScript的開源Web應用框架&#xff0c;用于構建單頁應用程序&#xff08;SPA&#xff09;。Angular vs AngularJS對比&#xff1a;特性AngularJSAn…

CSS 語音參考

CSS 語音參考 概述 CSS&#xff08;層疊樣式表&#xff09;是用于描述HTML或XML文檔樣式的樣式表語言。它為網頁元素提供了一種統一的方式來定義字體、顏色、布局和其他視覺屬性。CSS語音參考旨在為開發者提供一個詳盡的指南&#xff0c;以便他們能夠更有效地使用CSS來增強網頁…

C# WPF 實現讀取文件夾中的PDF并顯示其頁數

文章目錄技術選型第一步&#xff1a;創建項目并安裝依賴庫第二步&#xff1a;定義數據模型 (Model)第三步&#xff1a;創建視圖模型 (ViewModel)第四步&#xff1a;設計用戶界面 (View)總結與解釋后記關于轉換器的錯誤工作中需要整理一些PDF格式文件&#xff0c;程序員的存在就…

設計模式(五)創建型:原型模式詳解

設計模式&#xff08;五&#xff09;創建型&#xff1a;原型模式詳解原型模式&#xff08;Prototype Pattern&#xff09;是 GoF 23 種設計模式中的創建型模式之一&#xff0c;其核心價值在于通過復制現有對象來創建新對象&#xff0c;而不是通過 new 關鍵字調用構造函數。它特…

K8S 八 數據存儲-高級存儲PV PVC 生命周期;配置存儲ConfigMap Secret

目錄數據存儲 Volume8.1 基本存儲8.1.1 EmptyDir8.1.2 HostPath 掛載目錄8.1.3 NFSnfs的服務8.2 高級存儲8.2.1 PV和PVC8.2.2 PV 持久化卷申請8.2.3 PVC 資源申請PVC的配置參數8.2.4 生命周期配置存儲8.3.1 ConfigMap8.3.2 Secret數據存儲 Volume Kubernetes的Volume支持多種類…