MyBatis-plus 快速入門

提示:MyBatis-Plus(MP)是一個 MyBatis的增強版

文章目錄

  • 前言
  • 使用MybatisPlus的基本步驟
    • 1、引入MybatisPlus依賴代替Mybatis依賴
    • 2、定義Mapper接口并繼承BaseMapper
      • 他是怎么知道哪張表,哪些字段呢
    • 3、實體類注解
    • 4、根據需要添加配置


前言

提示:這里可以添加本文要記錄的大概內容:

使用MybatisPlus的基本步驟

pom.xml文件引入依賴

1、引入MybatisPlus依賴代替Mybatis依賴

MyBatisPlus官方提供了starter,其中集成了MybatisMybatisPlus的所有功能,并且實現了自動裝配效果。因此可以用MybatisPlusstarter代替Mybatisstarter

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

2、定義Mapper接口并繼承BaseMapper

自定義的Mapper繼承MybatisPlus提供的BaseMapper接口:

public interface UserMapper extends BaseMapper<User> {// 繼承 BaseMapper 后,無需手動編寫 CRUD 方法
}

單表的增刪改查可以不用寫SQL語句、mapper 接口

原來mapper接口:

public interface UserMapper {void saveUser(User user); // 保存用戶void deleteUser(Long id); // 根據 ID 刪除用戶void updateUser(User user); // 更新用戶信息User queryUserById(@Param("id") Long id); // 根據 ID 查詢用戶List<User> queryUserByIds(@Param("ids") List<Long> ids); // 根據 ID 列表批量查詢用戶
}

繼承后:注意泛型為實體類的類型

public interface UserMapper extends BaseMapper<User> {//實體類void saveUser(User user);    // 對應 BaseMapper.insert()void deleteUser(Long id);    // 對應 BaseMapper.deleteById()void updateUser(User user);  // 對應 BaseMapper.updateById()User queryUserById(@Param("id") Long id);          // 對應 BaseMapper.selectById()List<User> queryUserByIds(@Param("ids") List<Long> ids);  // 對應 BaseMapper.selectBatchIds()
}

他是怎么知道哪張表,哪些字段呢

MyBatisPlus通過掃描實體類,并基于反射獲取實體類信息作為數據庫表信息。

遵循MP約定:
默認以類名駝峰轉下劃線作為表名
默認把名為id的字段作為主鍵
默認把變量名駝峰轉下劃線作為表的字段名,不遵循約定就要用注解

不符合約定的要自己定義表名、字段名
在這里插入圖片描述

3、實體類注解

三個注解的核心用途和區別:

注解作用常見場景
@TableName指定實體類對應的數據庫表名實體類名與表名不一致時
@TableId指定主鍵字段及其生成策略主鍵字段名與列名不一致或需要指定生成策略
@TableField指定普通字段的映射關系或忽略字段字段名與列名不一致或需要忽略某些字段

通過合理使用這些注解,可以輕松實現實體類與數據庫表之間的映射,同時滿足各種復雜的業務需求。
在這里插入圖片描述

@TableName("tb_user") // 指定數據庫表名為 "tb_user"
public class User {@TableId(type = IdType.ASSIGN_ID) // 雪花算法生成主鍵private Long id;@TableField("username") // 數據庫列名為 "username",映射到實體類的 name 字段private String name;@TableField("is_married") // 數據庫列名為 "is_married",映射到實體類的 isMarried 字段private Boolean isMarried;@TableField("`order`") // 數據庫列名為 "order"(避免與 SQL 關鍵字沖突),需要使用反引號包裹private Integer order;@TableField(exist = false) // 非數據庫字段,不映射到數據庫private String address;
}

IdType 枚舉

  • AUTO:數據庫自增長
  • INPUT:通過 set 方法自行輸入主鍵值,需手動指定主鍵。
  • ASSIGN_ID:分配 ID,通過 IdentifierGenerator 接口的 nextId 方法生成主鍵,默認實現類為 DefaultIdentifierGenerator,基于雪花算法生成唯一 ID。

使用 @TableField 的常見場景

  1. 成員變量名與數據庫字段名不一致
    當實體類的成員變量名與數據庫表中的字段名不一致時,可以使用 @TableField 注解來指定數據庫字段名。

  2. 成員變量名以 is 開頭,且是布爾值
    如果實體類的布爾類型字段以 is 開頭,而數據庫字段名通常沒有 is 前綴,可以通過 @TableField 映射字段名。

  3. 成員變量名與數據庫關鍵字沖突
    如果實體類的字段名與 SQL 關鍵字沖突(如 ordergroup 等),需要使用 @TableField 注解,并通過反引號包裹字段名以避免語法錯誤。

  4. 成員變量不是數據庫字段
    如果實體類中某些字段不需要映射到數據庫表(如臨時字段或計算字段),可以使用 @TableField(exist = false) 忽略該字段。


IdType的常見類型有哪些?

類型主鍵生成方式適用場景
AUTO數據庫自增數據庫支持自增主鍵(如 MySQL)
ASSIGN_IDMyBatis-Plus 雪花算法生成全局唯一 ID,適用于非自增主鍵
INPUT手動輸入主鍵值由業務邏輯生成
ASSIGN_UUIDMyBatis-Plus 生成 UUID字符串類型主鍵,適用于分布式系統
NONE未設置主鍵生成策略主鍵生成邏輯由外部處理

4、根據需要添加配置

MyBatisPlus的配置項繼承了MyBatis原生配置和一些自己特有的配置
在這里插入圖片描述

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

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

相關文章

找搭子系統 搭子經濟新風口 基于精準匹配的社交新生態探索

一、市場前景&#xff1a;為什么現在需要"找搭子"&#xff1f; 孤獨經濟爆發 超60%年輕人存在"精準陪伴"需求&#xff08;2024社交報告&#xff09; 傳統社交App無法滿足"非婚戀、非熟人"的中間態需求 線下活動復蘇 劇本殺/飛盤等興趣活動年增…

深入探析C#設計模式:訪問者模式(Visitor Pattern)的原理與應用

引言 在軟件開發中&#xff0c;設計模式為我們提供了高效、可維護的解決方案。而在眾多設計模式中&#xff0c;訪問者模式&#xff08;Visitor Pattern&#xff09;以其獨特的結構和應用場景&#xff0c;在復雜系統中發揮著重要作用。本文將深入講解訪問者模式的定義、原理、優…

Redis核心功能實現

前言 學習是個輸入的過程&#xff0c;在進行輸入之后再進行一些輸出&#xff0c;比如寫寫文章&#xff0c;筆記&#xff0c;或者做一些技術串講&#xff0c;雖然需要花費不少時間&#xff0c;但是好處很多&#xff0c;首先是能通過輸出給自己的輸入帶來一些動力&#xff0c;然…

RPA VS AI Agent

圖片來源網絡 RPA&#xff08;機器人流程自動化&#xff09;和AI Agent&#xff08;人工智能代理&#xff09;在自動化和智能化領域各自扮演著重要角色&#xff0c;但它們之間存在顯著的區別。以下是對兩者區別的詳細分析&#xff1a; 一、定義與核心功能 RPA&#xff08;機…

多模態大語言模型arxiv論文略讀(十五)

Jailbreaking GPT-4V via Self-Adversarial Attacks with System Prompts ?? 論文標題&#xff1a;Jailbreaking GPT-4V via Self-Adversarial Attacks with System Prompts ?? 論文作者&#xff1a;Yuanwei Wu, Xiang Li, Yixin Liu, Pan Zhou, Lichao Sun ?? 研究機構…

第1節:計算機視覺發展簡史

計算機視覺與圖像分類概述&#xff1a;計算機視覺發展簡史 計算機視覺&#xff08;Computer Vision&#xff09;作為人工智能領域的重要分支&#xff0c;是一門研究如何使機器"看"的科學&#xff0c;更具體地說&#xff0c;是指用攝影機和計算機代替人眼對目標進行識…

【工具】Fiddler抓包

本文主要講解如何使用Fiddler抓HTTP包&#xff0c;可通過所抓包內容分析HTTP請求/響應的細節 安裝與配置 1.下載與安裝 下載地址: https://www.telerik.com/fiddler/ 點擊了鏈接后&#xff0c;跳轉到以下頁面&#xff1a; 點擊Fiddler Classic(免費版)后&#xff0c;跳轉到以…

STM32F103復用JTAG/SWD引腳為GPIO

普中-精靈1開發板&#xff0c;主芯片為STM32F103C8T6&#xff0c;4個獨立按鍵K1~K4依次接PA15~PA12&#xff0c;按下為低電平&#xff0c;8個LED燈D1~D8&#xff0c;依次接PA0~PA7。查詢手冊得知&#xff1a;PA15主功能為JTDI&#xff0c;PA14為JTCK/SWCLK&#xff0c;PA13為JT…

難度偏低,25西電人工智能學院821、833、834考研錄取情況

1、人工智能學院各個方向 2、人工智能學院近三年復試分數線對比 學長、學姐分析 由表可看出&#xff1a; 1、智能院25年院線相對于24年院線 全部專業下降比較多&#xff0c;其中控制科學與工程下降20分&#xff0c;計算機科學與技術下降20分&#xff0c;計算機技術[專碩]下降…

達夢數據校驗系統(DMDVS):數據完整性保障的不二之選

產品概述 達夢數據校驗系統(DMDVS)是一款企業級數據一致性管理平臺,提供跨數據庫、跨平臺的數據比對與修復能力。系統采用模塊化架構設計,支持靜態校驗、動態校驗、單向校驗及分布式校驗四大核心模式,適用于數據遷移驗證、容災備份核查、實時同步監控等關鍵場景,??更多…

【3dSwap】3D-Aware Face Swapping

文章目錄 3D-Aware Face Swapping背景points貢獻方法從2D圖像推斷3D先驗通過潛在代碼操縱進行人臉交換聯合樞軸調整目標函數實驗與二維人臉交換方法比較進一步分析3D感知人臉交換消融實驗局限性3D-Aware Face Swapping 會議/期刊:CVPR 2023 作者: code:https://lyx0208.gi…

客戶案例 | 日事清×初心家居:多部門協作實現新品上架自動化

1、客戶背景 佛山市初心家居有限公司&#xff0c;主營家居類目&#xff0c;年營收額近億元。初心家居有自己的家居生產工廠&#xff08;可為第三方提供生產&#xff09;&#xff0c;店內產品均為自主研發設計&#xff0c;所以新品開發也是初心家居的核心。 2、客戶工作場景及需…

KWDB創作者計劃—KWDB多副本集群保姆級部署

&#x1f4e2;&#x1f4e2;&#x1f4e2;&#x1f4e3;&#x1f4e3;&#x1f4e3; 作者&#xff1a;IT邦德 中國DBA聯盟(ACDU)成員&#xff0c;10余年DBA工作經驗 Oracle、PostgreSQL ACE CSDN博客專家及B站知名UP主&#xff0c;全網粉絲10萬 擅長主流Oracle、MySQL、PG、高斯…

micro ubuntu 安裝教程

micro ubuntu 安裝教程 官網地址 : https://micro-editor.github.io 以下是在 Ubuntu 系統中安裝 micro 編輯器 的詳細教程&#xff1a; 方法 1&#xff1a;通過 ?apt?? 直接安裝&#xff08;推薦&#xff09; 適用于 Ubuntu 20.04 及以上版本&#xff08;官方倉庫已收錄…

Docker 鏡像 的常用命令介紹

拉取鏡像 $ docker pull imageName[:tag][:tag] tag 不寫時&#xff0c;拉取的 是 latest 的鏡像查看鏡像 查看所有本地鏡像 docker images or docker images -a查看完整的鏡像的數字簽名 docker images --digests查看完整的鏡像ID docker images --no-trunc只查看所有的…

從零搭建微服務項目Pro(第0章——微服務項目腳手架搭建)

前言&#xff1a; 在本專欄Base第0章曾介紹一種入門級的微服務項目搭建&#xff0c;盡管后續基于此框架上實現了Nacos、Eureka服務注冊發現、配置管理、Feign調用、網關模塊、OSS文件存儲、JSR參數校驗、LogBack日志配置&#xff0c;鑒權模塊、定時任務模塊等&#xff0c;但由于…

VS Code下開發FPGA——FPGA開發體驗提升__下

上一篇&#xff1a;IntelliJ IDEA下開發FPGA-CSDN博客 Type&#xff1a;Quartus 一、安裝插件 在應用商店先安裝Digtal IDE插件 安裝后&#xff0c;把其他相關的Verilog插件禁用&#xff0c;避免可能的沖突。重啟后&#xff0c;可能會彈出下面提示 這是插件默認要求的工具鏈&a…

使用Python從零開始構建端到端文本到圖像 Transformer大模型

簡介&#xff1a;通過特征向量從文本生成圖像 回顧&#xff1a;多模態 Transformer 在使用Python從零實現一個端到端多模態 Transformer大模型中&#xff0c;我們調整了字符級 Transformer 以處理圖像&#xff08;通過 ResNet 特征&#xff09;和文本提示&#xff0c;用于視覺…

Webpack中的文件指紋:給資源戴上個“名牌”

你是否想過&#xff0c;當你修改代碼后&#xff0c;瀏覽器為什么仍然拿著舊版資源不放&#xff1f;秘密就在于——文件指紋&#xff01;簡單來說&#xff0c;文件指紋就像給每個構建出來的文件貼上獨一無二的“姓名牌”&#xff0c;告訴瀏覽器&#xff1a;“嘿&#xff0c;我更…

python可變對象與不可變對象

文章目錄 Python 中的可變對象與不可變對象不可變對象(Immutable Objects)可變對象(Mutable Objects)重要區別 Python 中的可變對象與不可變對象 在 Python 中&#xff0c;對象可以分為可變對象(mutable)和不可變對象(immutable)&#xff0c;這是 Python 中非常重要的概念&…