搜尋
首頁Javajava教程基於Spring Boot和MyBatis Plus實作ORM映射

基於Spring Boot和MyBatis Plus實作ORM映射

Jun 22, 2023 pm 09:27 PM
spring bootorm映射mybatis plus

在Java web應用開發過程中,ORM(Object-Relational Mapping)映射技術用來將資料庫中的關係型資料對應到Java物件中,方便開發者進行資料存取與操作。 Spring Boot作為目前最受歡迎的Java web開發框架之一,已經提供了整合MyBatis的方式,而MyBatis Plus則是在MyBatis的基礎上擴展的一種ORM框架。本文將介紹如何使用Spring Boot和MyBatis Plus來實現ORM映射。

一、Spring Boot整合MyBatis Plus
在Spring Boot中使用MyBatis Plus非常簡單,只需在maven中加入MyBatis Plus的依賴即可。

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

同時,在application.properties或application.yml中配置MyBatis Plus相關參數,如下:

#数据库配置
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/mybatis_plus?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=123456
#MyBatis Plus配置
mybatis.configuration.cache-enabled=false
mybatis.mapper-locations=classpath:mapper/*.xml

其中,driver-class-name, url, username和password是資料庫相關配置,而mapper-locations是MyBatis Plus的SQL映射設定檔所在的路徑。

二、定義實體類別和Mapper介面
和MyBatis一樣,使用MyBatis Plus也需要定義實體類別和Mapper介面。下面以一個簡單的User表為例,定義對應的實體類別和Mapper介面。

  1. 定義實體類別
@Getter
@Setter
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class User {

    private Integer id;
    private String name;
    private Integer age;
    private String email;
    private Integer gender;
    private LocalDateTime createTime;
    private LocalDateTime updateTime;

}

使用註解@Getter、@Setter和@Builder可以簡化程式碼,而@NoArgsConstructor和@AllArgsConstructor是用來產生無參和全參構造函數的。

  1. 定義Mapper介面
public interface UserMapper extends BaseMapper<User> {
}

這裡使用了MyBatis Plus提供的BaseMapper,可以省去許多繁瑣的SQL作業。

三、使用MyBatis Plus進行資料庫操作
在定義完Mapper介面後,就可以使用MyBatis Plus來進行資料庫操作了。

  1. 插入資料
User user = User.builder()
        .name("test")
        .age(20)
        .email("test@test.com")
        .gender(1)
        .createTime(LocalDateTime.now())
        .updateTime(LocalDateTime.now())
        .build();
int count = userMapper.insert(user);

在插入資料時,可以直接使用Mapper介面中提供的insert方法,MyBatis Plus會自動將實體類別的屬性對應到資料庫中的對應列。

  1. 查詢資料
List<User> userList = userMapper.selectList(null);

在查詢資料時,可以直接使用Mapper介面中提供的selectList方法,傳入null或一個空的QueryWrapper物件即可查詢出所有數據。另外,還可以使用MyBatis Plus提供的lambda表達式和鍊式操作來進行更為複雜的查詢,如下所示:

QueryWrapper<User> wrapper = Wrappers.<User>lambdaQuery()
        .eq(User::getGender, 1)
        .ge(User::getAge, 20)
        .orderByDesc(User::getCreateTime);
List<User> userList = userMapper.selectList(wrapper);

在上述程式碼中,使用Wrappers.lambdaQuery()定義了一個QueryWrapper對象,並且透過.eq、.ge和.orderByDesc鍊式操作來建構查詢條件和排序規則。

  1. 更新數據
User user = userMapper.selectById(id);
user.setAge(30);
int count = userMapper.updateById(user);

在更新數據時,可以先透過selectById查詢出需要更新的數據,然後對需要更新的屬性進行修改,並使用updateById將修改後的資料更新到資料庫中。

  1. 刪除資料
int count = userMapper.deleteById(id);

最後,在刪除資料時,只需呼叫Mapper介面中提供的deleteById方法即可。

四、結論
本文介紹如何使用Spring Boot和MyBatis Plus來實現ORM映射,透過簡單的設定和程式碼即可實現資料庫操作。 MyBatis Plus作為MyBatis的延伸框架,可以大幅簡化開發人員的工作量,同時提升程式碼的可讀性和可維護性。由於篇幅所限,本文只對MyBatis Plus的基本用法進行了介紹,更多進階功能請參考官方文件。

以上是基於Spring Boot和MyBatis Plus實作ORM映射的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
如何將Maven或Gradle用於高級Java項目管理,構建自動化和依賴性解決方案?如何將Maven或Gradle用於高級Java項目管理,構建自動化和依賴性解決方案?Mar 17, 2025 pm 05:46 PM

本文討論了使用Maven和Gradle進行Java項目管理,構建自動化和依賴性解決方案,以比較其方法和優化策略。

如何使用適當的版本控制和依賴項管理創建和使用自定義Java庫(JAR文件)?如何使用適當的版本控制和依賴項管理創建和使用自定義Java庫(JAR文件)?Mar 17, 2025 pm 05:45 PM

本文使用Maven和Gradle之類的工具討論了具有適當的版本控制和依賴關係管理的自定義Java庫(JAR文件)的創建和使用。

如何使用咖啡因或Guava Cache等庫在Java應用程序中實現多層緩存?如何使用咖啡因或Guava Cache等庫在Java應用程序中實現多層緩存?Mar 17, 2025 pm 05:44 PM

本文討論了使用咖啡因和Guava緩存在Java中實施多層緩存以提高應用程序性能。它涵蓋設置,集成和績效優勢,以及配置和驅逐政策管理最佳PRA

如何將JPA(Java持久性API)用於具有高級功能(例如緩存和懶惰加載)的對象相關映射?如何將JPA(Java持久性API)用於具有高級功能(例如緩存和懶惰加載)的對象相關映射?Mar 17, 2025 pm 05:43 PM

本文討論了使用JPA進行對象相關映射,並具有高級功能,例如緩存和懶惰加載。它涵蓋了設置,實體映射和優化性能的最佳實踐,同時突出潛在的陷阱。[159個字符]

Java的類負載機制如何起作用,包括不同的類載荷及其委託模型?Java的類負載機制如何起作用,包括不同的類載荷及其委託模型?Mar 17, 2025 pm 05:35 PM

Java的類上載涉及使用帶有引導,擴展程序和應用程序類負載器的分層系統加載,鏈接和初始化類。父代授權模型確保首先加載核心類別,從而影響自定義類LOA

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
4 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
4 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
4 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它們
4 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

將Eclipse與SAP NetWeaver應用伺服器整合。

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

Dreamweaver Mac版

Dreamweaver Mac版

視覺化網頁開發工具

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。