深入解析:在Spring Boot中集成MyBatis Plus實現高效數據庫操作

前后端微服務商城項目,手把手教學!

在Spring Boot中集成第三方框架,實際上是非常常見的一種做法。Spring Boot自帶了很多開箱即用的功能,但在實際項目開發中,我們經常需要借助一些第三方框架來實現更為復雜的功能。比如集成一個消息隊列、緩存框架、第三方支付、日志框架等。這篇文章將以集成MyBatis Plus為例,深入探討如何在Spring Boot項目中集成第三方框架并實現相關功能。

一、為什么選擇MyBatis Plus

MyBatis Plus是基于MyBatis的增強工具,它簡化了MyBatis的使用,減少了重復代碼,提高了開發效率。MyBatis本身是一個靈活的ORM框架,但它的配置較為復雜,尤其是在寫SQL時,經常需要編寫大量的SQL語句。而MyBatis Plus通過自定義的條件構造器、內置的CRUD功能、自動生成SQL等功能,使得操作數據庫變得更加簡便。

二、集成MyBatis Plus

1. 添加依賴

在Spring Boot項目中,首先需要在pom.xml文件中添加MyBatis Plus的相關依賴。你可以通過以下依賴來引入MyBatis Plus。

<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.1</version>
</dependency>

如果你使用的是Gradle,依賴配置如下:

implementation 'com.baomidou:mybatis-plus-boot-starter:3.5.1'
2. 配置數據源

application.properties或者application.yml文件中,配置數據源。你需要配置數據庫的連接信息。

spring.datasource.url=jdbc:mysql://localhost:3306/your_database
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.platform=mysql
spring.datasource.test-on-borrow=true
3. 啟動類添加MyBatis Plus的注解

在Spring Boot的啟動類中,添加@MapperScan注解掃描MyBatis的Mapper接口。

@SpringBootApplication
@MapperScan("com.example.mapper")
public class Application {public static void main(String[] args) {SpringApplication.run(Application.class, args);}
}
4. 創建實體類和Mapper接口

MyBatis Plus的核心是實體類和Mapper接口。首先創建一個實體類,例如User

@Data
@TableName("user")
public class User {private Long id;private String username;private String email;private Integer age;
}

然后,創建對應的Mapper接口:

@Mapper
public interface UserMapper extends BaseMapper<User> {// 此處可以自定義方法
}

BaseMapper是MyBatis Plus提供的一個基礎接口,提供了很多常用的數據庫操作方法。

5. Service層調用

在Service層,注入UserMapper并進行相關數據庫操作:

@Service
public class UserService {@Autowiredprivate UserMapper userMapper;public List<User> listUsers() {return userMapper.selectList(null);}public boolean addUser(User user) {return userMapper.insert(user) > 0;}public boolean deleteUser(Long id) {return userMapper.deleteById(id) > 0;}
}
6. Controller層暴露接口

最后,在Controller層暴露API接口:

@RestController
@RequestMapping("/users")
public class UserController {@Autowiredprivate UserService userService;@GetMappingpublic List<User> getUsers() {return userService.listUsers();}@PostMappingpublic boolean addUser(@RequestBody User user) {return userService.addUser(user);}@DeleteMapping("/{id}")public boolean deleteUser(@PathVariable Long id) {return userService.deleteUser(id);}
}

三、MyBatis Plus的高級功能

  1. 分頁查詢

    MyBatis Plus提供了非常簡單的分頁功能。只需要通過Page對象即可實現分頁查詢。

    Page<User> page = new Page<>(1, 10);  // 當前頁、每頁大小
    Page<User> userPage = userMapper.selectPage(page, null);
  2. 條件構造器

    MyBatis Plus提供了一個QueryWrapper,用于構造復雜的查詢條件。比如:

    QueryWrapper<User> queryWrapper = new QueryWrapper<>();
    queryWrapper.eq("age", 25).like("username", "John");
    List<User> users = userMapper.selectList(queryWrapper);
  3. 自動填充字段

    MyBatis Plus支持自動填充字段的功能,常見于插入或更新操作中,可以自動填充創建時間、更新時間等字段。

    @TableField(fill = FieldFill.INSERT)
    private Date createTime;@TableField(fill = FieldFill.INSERT_UPDATE)
    private Date updateTime;

    在配置了自動填充功能后,MyBatis Plus會自動在插入和更新時填充這些字段。

  4. 邏輯刪除

    MyBatis Plus支持邏輯刪除,只需要在實體類中定義一個is_deleted字段,并使用@TableLogic注解。

    @TableLogic
    private Integer deleted;

    使用deleted字段來標識數據是否刪除。

四、總結

集成MyBatis Plus后,你可以享受到很多便捷的功能,比如自動生成CRUD方法、條件構造器、分頁查詢等,極大提高了開發效率,減少了重復代碼。通過這種集成方式,Spring Boot和MyBatis Plus的結合使得我們能夠更加高效地開發出功能完善且結構清晰的項目。

希望這篇文章對你理解Spring Boot如何集成MyBatis Plus并實現相關功能有所幫助!

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

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

相關文章

現場可以通過手機或者pad實時拍照上傳到大屏幕的照片墻現場大屏電子照片墻功能

現場可以通過手機或者pad實時拍照上傳到大屏幕的照片墻現場大屏電子照片墻功能&#xff0c;每個人都可以通過手機實時拍照上傳到大屏幕上,同時還可以發布留言內容&#xff0c;屏幕上會同步滾動播放展示所有人的照片和留言。相比校傳統的照片直播功能更加靈活方便&#xff0c;而…

項目管理工具Jira在營銷工作管理中的應用與實踐

本文由Atlassian全球白金合作伙伴-龍智編輯整理。 市場營銷人員是維系組織團結的粘合劑。作為公司中最具協作精神的團隊之一&#xff0c;他們確保每個人目標一致&#xff0c;并專注于客戶真正的需求。他們擅長溝通協作&#xff0c;積極響應客戶訴求及塑造品牌方向&#xff0c;…

grafana 忘記登陸密碼

重置 Grafana 登錄密碼 通過命令行重置 admin 密碼 # 如果是通過二進制安裝的 Grafana grafana-cli admin reset-admin-password <新密碼>

基于Flask框架的食譜數據可視化分析系統的設計與實現

【Flask】基于Flask框架的食譜數據可視化分析系統的設計與實現 &#xff08;完整系統源碼開發筆記詳細部署教程&#xff09;? 目錄 一、項目簡介二、項目界面展示三、項目視頻展示 一、項目簡介 在當今數字化時代&#xff0c;信息可視化已成為一種高效的數據理解和傳播手段。…

Ubuntu 下 nginx-1.24.0 源碼分析 - ngx_array_init 函數

ngx_array_init 定義在 src/core/ngx_array.h static ngx_inline ngx_int_t ngx_array_init(ngx_array_t *array, ngx_pool_t *pool, ngx_uint_t n, size_t size) {/** set "array->nelts" before "array->elts", otherwise MSVC thinks* that "…

基于 DeepSeek + Gemeni 打造 AI+前端的多人聊天室

開源項目 botgroup.chat 介紹 AI 多人聊天室&#xff1a; 一個基于 React 和 Cloudflare Pages(免費一鍵部署) 的多人 AI 聊天應用&#xff0c;支持多個 AI 角色同時參與對話&#xff0c;提供類似群聊的交互體驗。體驗地址&#xff1a;https://botgroup.chat 開源倉庫&#x…

GPU和FPGA的區別

GPU&#xff08;Graphics Processing Unit&#xff0c;圖形處理器&#xff09;和 FPGA&#xff08;Field-Programmable Gate Array&#xff0c;現場可編程門陣列&#xff09;不是同一種硬件。 我的理解是&#xff0c;雖然都可以用于并行計算&#xff0c;但是GPU是純計算的硬件…

詳解單例模式、模板方法及項目和源碼應用

大家好&#xff0c;我是此林。 設計模式為解決特定問題提供了標準化的方法。在項目中合理應用設計模式&#xff0c;可以避免重復解決相同類型的問題&#xff0c;使我們能夠更加專注于具體的業務邏輯&#xff0c;減少重復勞動。設計模式在定義系統結構時通常考慮到未來的擴展。…

高清下載油管視頻到本地

下載工具并安裝: yt-dlp官網地址&#xff1a; GitHub - yt-dlp/yt-dlp: A feature-rich command-line audio/video downloader ffmpeg官網地址&#xff1a; Download FFmpeg 注&#xff1a;記住為其添加環境變量 操作命令&#xff1a; 該指令表示以720p碼率下載VIDEO_UR…

Docker掛載數據顯式掛載和隱式掛載的區別

項目使用的Docker file 創建數據卷掛載點&#xff0c;結果發現宿主機目錄中的數據卷路徑下是空的&#xff0c;才知道docker file中創建的數據卷是隱式掛載&#xff0c;并不會在宿主機上留下持久化數據&#xff0c;隨著容器被刪除隱式掛載的數據卷也會跟著被刪除 后面改為在jen…

IOS UITextField 無法隱藏鍵盤問題

設置UITextField 鍵盤按鈕返回鍵為“完成”&#xff0c;即return key 設置done .m代碼設置代理 //設置代理協議 UITextFieldDelegate&#xff0c; self.mobileTextField.delegate self; ///點擊完成鍵隱藏鍵盤 - (BOOL)textFieldShouldReturn:(UITextField *)textField{//取…

【深度學習】Unet的基礎介紹

U-Net是一種用于圖像分割的深度學習模型&#xff0c;特別適合醫學影像和其他需要分割細節的任務。如圖&#xff1a; Unet論文原文 為什么叫U-Net&#xff1f; U-Net的結構像字母“U”&#xff0c;所以得名。它的結構由兩個主要部分組成&#xff1a; 下采樣&#xff08;編碼…

RT-Thread+STM32L475VET6實現定時器定時功能

文章目錄 前言一、板載資源介紹二、具體步驟1.打開STM32CubeMX進行相關配置1.1 使用外部高速時鐘&#xff0c;并修改時鐘樹1.2 打開定時器(定時器根據自己需求調整)1.3 打開串口1.4 生成工程 2. 配置定時器2.1 打開HWTIMER設備驅動2.2 聲明定時器2.3將stm32l4xx_hal_msp.c中HAL…

Linux /etc/fstab文件詳解:自動掛載配置指南(中英雙語)

Linux /etc/fstab 文件詳解&#xff1a;自動掛載配置指南 在 Linux 系統中&#xff0c;/etc/fstab&#xff08;File System Table&#xff09;是一個至關重要的配置文件&#xff0c;它用于定義系統開機時自動掛載的文件系統。如果你想讓磁盤分區、遠程存儲&#xff08;如 NFS&…

鏈表-基礎訓練(二)鏈表 day14

兩兩交換鏈表中的節點 題目示意&#xff1a; 給定一個鏈表&#xff0c;兩兩交換其中相鄰的節點&#xff0c;并返回交換后的鏈表。 你不能只是單純的改變節點內部的值&#xff0c;而是需要實際的進行節點交換。 原先我的思路是圖像上的思路&#xff0c;但是我感覺還是很復雜…

Unity游戲制作中的C#基礎(4)數組聲明和使用

一、數組的聲明 在 C# 中&#xff0c;聲明數組有多種方式&#xff0c;每種方式都有其適用的場景&#xff0c;下面為你逐一詳細介紹&#xff1a; 1. 直接初始化聲明 這種方式直觀且便捷&#xff0c;在聲明數組的同時就為其賦初值&#xff0c;讓數組從誕生之初就擁有了具體的數據…

【Gin-Web】Bluebell社區項目梳理5:投票功能分析與實現

本文目錄 一、投票功能投票流程實現代碼redis投票 一、投票功能 投票流程 首先我們要明確&#xff0c;就是 誰&#xff08;哪個用戶&#xff1a;userID&#xff09; 給 哪個帖子&#xff08;postID&#xff09; 投了 什么票&#xff08;贊成票or反對票&#xff09;。 贊成票…

XUnity.AutoTranslator-deepseek——調用騰訊的DeepSeek V3 API,實現Unity游戲中日文文本的自動翻譯

XUnity.AutoTranslator-deepseek 本項目通過調用騰訊的DeepSeek V3 API&#xff0c;實現Unity游戲中日文文本的自動翻譯。 準備工作 1. 獲取API密鑰 訪問騰訊云API控制臺申請DeepSeek的API密鑰&#xff08;限時免費&#xff09;。也可以使用其他平臺提供的DeepSeek API。 …

Python爬蟲-批量爬取股票數據貓各股票代碼

前言 本文是該專欄的第47篇,后面會持續分享python爬蟲干貨知識,記得關注。 本文筆者以股票數據貓為例子,基于Python爬蟲,批量獲取各股票代碼數據。 具體實現思路和詳細邏輯,筆者將在正文結合完整代碼進行詳細介紹。廢話不多說,下面跟著筆者直接往下看正文詳細內容。(附…

《Keras 3 :使用 Vision Transformers 進行物體檢測》:此文為AI自動翻譯

《Keras 3 :使用 Vision Transformers 進行物體檢測》 作者:Karan V. Dave 創建日期:2022 年 3 月 27 日最后修改時間:2023 年 11 月 20 日描述:使用 Vision Transformer 進行對象檢測的簡單 Keras 實現。 (i) 此示例使用 Keras 3 在 Colab 中查看 GitHub 源 介紹 A…