全文目錄:
- 開篇語
- 前言
- 1. MyBatis-Plus 的 `IService` 接口
- 1.1 基本使用
- 示例:創建實體類 `User` 和 `UserService`
- 1.2 創建 `IService` 接口
- 1.3 創建 `ServiceImpl` 類
- 1.4 典型的數據庫操作方法
- 1.4.1 `save()`:保存數據
- 1.4.2 `remove()`:刪除數據
- 1.4.3 `updateById()`:根據 ID 更新數據
- 1.4.4 `list()`:查詢所有數據
- 1.4.5 `page()`:分頁查詢
- 1.5 自定義業務方法
- 示例:添加自定義業務方法
- 2. MyBatis-Plus Service 層的高級用法
- 2.1 條件構造器 `QueryWrapper`
- 2.2 更新和刪除的條件構造
- 2.3 分頁查詢
- 2.4 批量操作
- 3. 小結
- 文末
開篇語
哈嘍,各位小伙伴們,你們好呀,我是喵手。運營社區:C站/掘金/騰訊云/阿里云/華為云/51CTO;歡迎大家常來逛逛
??今天我要給大家分享一些自己日常學習到的一些知識點,并以文字的形式跟大家一起交流,互相學習,一個人雖可以走的更快,但一群人可以走的更遠。
??我是一名后端開發愛好者,工作日常接觸到最多的就是Java語言啦,所以我都盡量抽業余時間把自己所學到所會的,通過文章的形式進行輸出,希望以這種方式幫助到更多的初學者或者想入門的小伙伴們,同時也能對自己的技術進行沉淀,加以復盤,查缺補漏。
小伙伴們在批閱的過程中,如果覺得文章不錯,歡迎點贊、收藏、關注哦。三連即是對作者我寫作道路上最好的鼓勵與支持!
前言
MyBatis-Plus(簡稱 MP)是 MyBatis 的增強工具,它簡化了 MyBatis 的開發過程,提供了很多常用的功能封裝。Service
層是常見的業務邏輯層,主要負責對外提供操作數據庫的接口,并在該層實現具體的業務邏輯。MyBatis-Plus 提供了 IService
接口和一些封裝好的方法來幫助開發者實現數據層與業務層的交互,簡化代碼的編寫。
本文將深入探討如何使用 MyBatis-Plus 提供的 Service
接口來簡化開發,詳細講解其基本用法、常見功能以及如何擴展和自定義業務邏輯。
1. MyBatis-Plus 的 IService
接口
MyBatis-Plus 為業務邏輯層提供了 IService
接口,該接口包含了很多常用的數據庫操作方法。IService
接口通過泛型來操作具體的實體類,常用的方法包括:save()
、remove()
、update()
、list()
、page()
等。
1.1 基本使用
首先,我們需要創建一個繼承 IService
接口的服務接口和實現類。
示例:創建實體類 User
和 UserService
// 實體類 User
public class User {private Long id;private String name;private Integer age;private String email;// Getters and setters
}
1.2 創建 IService
接口
import com.baomidou.mybatisplus.extension.service.IService;public interface UserService extends IService<User> {// 可以在這里添加一些自定義的業務方法
}
UserService
繼承了 IService<User>
,IService
提供了一些常用的方法,例如 save()
, updateById()
, removeById()
等方法,UserService
類不需要實現這些方法,MyBatis-Plus 會自動為我們提供實現。
1.3 創建 ServiceImpl
類
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {// 這里可以添加自己的業務方法
}
ServiceImpl
是 MyBatis-Plus 提供的一個基礎實現類,它實現了 IService
接口的所有方法。我們通過繼承 ServiceImpl
來獲得對常見方法的支持,并且可以在 UserServiceImpl
中添加自定義業務邏輯。
1.4 典型的數據庫操作方法
在 IService
接口中,有許多已經實現的方法,這些方法極大地簡化了我們常見的 CRUD 操作。以下是幾個常用的方法:
1.4.1 save()
:保存數據
save()
方法用于保存一個實體對象,如果對象中存在主鍵,則會根據主鍵判斷是插入數據還是更新數據。
User user = new User();
user.setName("Tom");
user.setAge(25);
user.setEmail("tom@example.com");userService.save(user);
1.4.2 remove()
:刪除數據
remove()
方法根據條件刪除數據。可以根據 Wrapper
來定義刪除條件。
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("name", "Tom");
userService.remove(queryWrapper);
1.4.3 updateById()
:根據 ID 更新數據
updateById()
方法用于根據主鍵更新數據。
User user = new User();
user.setId(1L);
user.setName("Jerry");
user.setAge(26);userService.updateById(user);
1.4.4 list()
:查詢所有數據
list()
方法用于查詢所有數據。
List<User> users = userService.list();
1.4.5 page()
:分頁查詢
page()
方法支持分頁查詢,需要傳入 Page
對象和查詢條件。
Page<User> page = new Page<>(1, 10); // 第 1 頁,每頁 10 條數據
Page<User> userPage = userService.page(page);
System.out.println(userPage.getRecords()); // 獲取查詢的記錄
1.5 自定義業務方法
在 Service
接口中,除了繼承 IService
接口提供的默認方法外,我們還可以根據業務需求添加自定義的方法。例如,假設我們需要實現一個根據年齡查詢用戶的業務邏輯,可以在 UserService
接口中定義自定義方法,并在 UserServiceImpl
類中實現。
示例:添加自定義業務方法
public interface UserService extends IService<User> {List<User> getUsersByAge(int age);
}
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {@Overridepublic List<User> getUsersByAge(int age) {QueryWrapper<User> queryWrapper = new QueryWrapper<>();queryWrapper.eq("age", age);return this.list(queryWrapper);}
}
在 UserServiceImpl
中,我們通過 QueryWrapper
來封裝查詢條件,然后調用 MyBatis-Plus 提供的 list()
方法來查詢符合條件的數據。
2. MyBatis-Plus Service 層的高級用法
除了常見的 CRUD 操作,MyBatis-Plus 的 IService
還提供了一些高級功能,幫助我們進行復雜的查詢、分頁、條件構造等操作。
2.1 條件構造器 QueryWrapper
QueryWrapper
是 MyBatis-Plus 提供的條件構造器,能夠幫助我們更加靈活地構建查詢條件。你可以通過 QueryWrapper
來添加各種條件、排序和分頁操作。
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("age", 25).like("name", "T");
List<User> users = userService.list(queryWrapper);
2.2 更新和刪除的條件構造
除了查詢,QueryWrapper
還可以用于更新和刪除數據,幫助我們更加靈活地管理數據。
// 更新
User user = new User();
user.setAge(30);
QueryWrapper<User> updateWrapper = new QueryWrapper<>();
updateWrapper.eq("name", "Tom");
userService.update(user, updateWrapper);// 刪除
QueryWrapper<User> deleteWrapper = new QueryWrapper<>();
deleteWrapper.eq("name", "Tom");
userService.remove(deleteWrapper);
2.3 分頁查詢
分頁查詢是一個常見的需求。MyBatis-Plus 提供了非常簡潔的分頁支持,通過 Page
對象和 page()
方法,可以輕松實現分頁查詢。
Page<User> page = new Page<>(1, 10); // 第 1 頁,每頁 10 條數據
Page<User> resultPage = userService.page(page, new QueryWrapper<User>().like("name", "T"));
System.out.println(resultPage.getRecords());
2.4 批量操作
MyBatis-Plus 還支持批量操作,通常通過 saveBatch()
、updateBatchById()
等方法來實現批量插入、更新操作。
List<User> users = new ArrayList<>();
// 假設我們已經向列表中添加了多個 User 對象
userService.saveBatch(users);
3. 小結
通過 MyBatis-Plus 提供的 IService
接口,我們可以極大地簡化業務層的開發,避免重復編寫基礎的 CRUD 操作代碼。IService
接口為我們提供了常見的操作方法,如 save()
、updateById()
、remove()
、list()
等,而通過繼承 ServiceImpl
類,我們可以直接享用這些功能,并且可以根據需要擴展自定義的業務邏輯。
MyBatis-Plus 的強大之處不僅僅在于簡化了數據庫操作,還支持豐富的查詢功能、分頁功能、條件構造等,能夠滿足大多數企業級應用的需求。通過合理使用這些特性,我們可以更加高效地進行數據庫操作,提升開發效率。
… …
文末
好啦,以上就是我這期的全部內容,如果有任何疑問,歡迎下方留言哦,咱們下期見。
… …
學習不分先后,知識不分多少;事無巨細,當以虛心求教;三人行,必有我師焉!!!
wished for you successed !!!
??若喜歡我,就請關注我叭。
??若對您有用,就請點贊叭。
??若有疑問,就請評論留言告訴我叭。
版權聲明:本文由作者原創,轉載請注明出處,謝謝支持!