SpringBoot整合MyBatis Plus實現(xiàn)基本CRUD與高級功能
1. 引言
Spring Boot是一款用于快速構(gòu)建Spring應(yīng)用程序的框架,而MyBatis Plus是MyBatis的增強工具,提供了許多方便實用的功能,包括基本CRUD操作、自動填充、樂觀鎖、邏輯刪除等。本文將詳細(xì)介紹如何在Spring Boot項目中整合MyBatis Plus,并展示其基本CRUD功能以及高級功能的實現(xiàn)方式。
2. 項目搭建與依賴配置
首先,確保你已經(jīng)搭建好了Spring Boot項目。接下來,我們需要添加MyBatis Plus的依賴。
2.1 添加MyBatis Plus依賴
在pom.xml
文件中添加以下依賴:
<!-- MyBatis Plus --> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.4.3</version> </dependency>
2.2 配置數(shù)據(jù)源與MyBatis Plus
在application.properties
或application.yml
中配置數(shù)據(jù)庫連接信息和MyBatis Plus的相關(guān)配置:
spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/testdb?useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC username: your_username password: your_password mybatis-plus: mapper-locations: classpath:mapper/**/*.xml global-config: db-config: id-type: auto configuration: map-underscore-to-camel-case: true
以上配置中,mapper-locations
指定了MyBatis Plus的XML映射文件路徑,map-underscore-to-camel-case
表示數(shù)據(jù)庫字段采用下劃線命名,而Java實體類采用駝峰命名。
3. 實現(xiàn)基本CRUD功能
3.1 創(chuàng)建實體類
假設(shè)我們有一個實體類User
,對應(yīng)數(shù)據(jù)庫中的user
表:
import com.baomidou.mybatisplus.annotation.*; import lombok.Data; import java.util.Date; @Data @TableName("user") public class User { @TableId(type = IdType.AUTO) private Long id; private String username; private String password; private Integer age; @TableField(fill = FieldFill.INSERT) private Date createTime; @TableField(fill = FieldFill.INSERT_UPDATE) private Date updateTime; @TableLogic private Integer deleted; }
在上述實體類中,使用了@TableName
注解指定了對應(yīng)的數(shù)據(jù)庫表名,@TableId
表示主鍵,@TableField
用于自動填充,@TableLogic
表示邏輯刪除字段。
3.2 創(chuàng)建Mapper接口
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Mapper; @Mapper public interface UserMapper extends BaseMapper<User> { }
MyBatis Plus提供了BaseMapper
接口,通過繼承該接口,即可獲得常見的CRUD功能,無需手動編寫SQL。
3.3 實現(xiàn)Service層
import com.baomidou.mybatisplus.extension.service.IService; public interface UserService extends IService<User> { }
創(chuàng)建一個UserService
接口,繼承自IService
,該接口提供了常用的Service層方法。
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; @Service public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService { }
創(chuàng)建UserServiceImpl
類,實現(xiàn)UserService
接口,并繼承自ServiceImpl
,實現(xiàn)了其中的方法。
3.4 控制器實現(xiàn)
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.util.List; @RestController @RequestMapping("/user") public class UserController { @Autowired private UserService userService; @GetMapping("/{id}") public User getUser(@PathVariable Long id) { return userService.getById(id); } @GetMapping("/list") public List<User> listUsers() { return userService.list(); } @PostMapping public void addUser(@RequestBody User user) { userService.save(user); } @PutMapping public void updateUser(@RequestBody User user) { userService.updateById(user); } @DeleteMapping("/{id}") public void deleteUser(@PathVariable Long id) { userService.removeById(id); } }
以上代碼中,通過注入UserService
實現(xiàn)了基本的CRUD操作的接口。
4. 高級功能實現(xiàn)
4.1 自動填充功能
MyBatis Plus提供了自動填充功能,通過@TableField
注解的fill
屬性來指定填充的時機,常用的值有FieldFill.INSERT
和FieldFill.INSERT_UPDATE
。
@TableField(fill = FieldFill.INSERT) private Date createTime; @TableField(fill = FieldFill.INSERT_UPDATE) private Date updateTime;
上述代碼中,createTime
字段在插入時自動填充,updateTime
字段在插入和更新時自動填充。
4.2 樂觀鎖功能
MyBatis Plus支持樂觀鎖的實現(xiàn),通過@Version
注解在實體類的版本字段上添加樂觀鎖。
@Version private Integer version;
在更新時,MyBatis Plus會自動檢測版本字段,如果版本號不匹配,則更新失敗。
4.3 邏輯刪除功能
MyBatis Plus提供了邏輯刪除的功能,通過@TableLogic
注解在實體類的邏輯刪除字段上添加邏輯刪除標(biāo)記。
@TableLogic private Integer deleted;
在進(jìn)行邏輯刪除操作時,MyBatis Plus會更新這個字段的值,而不是物理刪除記錄。
5. 拓展:MyBatis Plus的其他功能
除了上述介紹的功能外,MyBatis Plus還提供了許多其他強大的功能,如條件構(gòu)造器、分頁查詢、性能分析、多租戶支持等。以下簡單介紹一些常用的功能:
5.1 條件構(gòu)造器
MyBatis Plus的條件構(gòu)造器可以輕松構(gòu)建復(fù)雜的查詢條件:
LambdaQueryWrapper<User> wrapper = Wrappers.<User>lambdaQuery() .eq(User::getUsername, "admin") .like(User::getPassword, "pass"); List<User> userList = userService.list(wrapper);
5.2 分頁查詢
MyBatis Plus支持簡單的分頁查詢:
IPage<User> page = new Page<>(1, 10); IPage<User> userPage = userService.page(page, null); List<User> userList = userPage.getRecords();
5.3 性能分析
MyBatis Plus提供了性能分析插件,可以方便地查看SQL執(zhí)行情況:
# application.yml mybatis-plus: configuration: log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
通過配置log-impl
屬性,可以將SQL輸出到控制臺,方便調(diào)試與優(yōu)化。
6. 總結(jié)
通過本文的介紹,我們學(xué)習(xí)了如何在Spring Boot項目中整合MyBatis Plus,并實現(xiàn)了基本的CRUD功能以及高級功能如自動填充、樂觀鎖、邏輯刪除等。MyBatis Plus的強大功能極大地簡化了數(shù)據(jù)庫操作,提高了開發(fā)效率。在實際項目中,根據(jù)具體需求,我們可以更深入地了解MyBatis Plus提供的各種功能,以更好地應(yīng)對復(fù)雜的業(yè)務(wù)場景。希望通過本文的學(xué)習(xí),讀者能夠更加熟練地使用Spring Boot和MyBatis Plus進(jìn)行項目開發(fā)。
以上就是SpringBoot整合MyBatis Plus實現(xiàn)基本CRUD與高級功能的詳細(xì)內(nèi)容,更多關(guān)于SpringBoot整合MyBatis Plus的資料請關(guān)注腳本之家其它相關(guān)文章!
- SpringBoot使用MyBatis實現(xiàn)數(shù)據(jù)的CRUD
- SpringBoot整合MyBatis實現(xiàn)CRUD操作項目實踐
- SpringBoot之整合MyBatis實現(xiàn)CRUD方式
- SpringBoot整合Mybatis Plus實現(xiàn)基本CRUD的示例代碼
- springboot+mybatis-plus實現(xiàn)內(nèi)置的CRUD使用詳解
- SpringBoot+Mybatis+Vue 實現(xiàn)商品模塊的crud操作
- 詳解springboot+mybatis-plue實現(xiàn)內(nèi)置的CRUD使用詳情
- SpringBoot整合Mybatis實現(xiàn)CRUD
- Spring Boot整合MyBatis-Plus實現(xiàn)CRUD操作的示例代碼
相關(guān)文章
Spring MVC打印@RequestBody、@Response日志的方法
這篇文章主要介紹了Spring MVC打印@RequestBody、@Response日志的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-02-02Java8中Stream?API的peek()方法詳解及需要注意的坑
這篇文章主要給大家介紹了關(guān)于Java8中Stream?API的peek()方法詳解及需要注意的坑,Java 中的 peek 方法是 Java 8 中的 Stream API 中的一個方法,它屬于中間操作,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-06-06Python機器學(xué)習(xí)三大件之二pandas
這篇文章主要介紹了Python機器學(xué)習(xí)三大件之二pandas,文中有非常詳細(xì)的代碼示例,對正在學(xué)習(xí)Python的小伙伴們有很好地幫助,需要的朋友可以參考下2021-05-05Java實現(xiàn)Consul/Nacos根據(jù)GPU型號、顯存余量執(zhí)行負(fù)載均衡的步驟詳解
這篇文章主要介紹了Java實現(xiàn)Consul/Nacos根據(jù)GPU型號、顯存余量執(zhí)行負(fù)載均衡的步驟詳解,本文分步驟結(jié)合實例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2025-04-04Java負(fù)載均衡算法實現(xiàn)之輪詢和加權(quán)輪詢
網(wǎng)上找了不少負(fù)載均衡算法的資源,都不夠全面,后來自己結(jié)合了網(wǎng)上的一些算法實現(xiàn),下面這篇文章主要給大家介紹了關(guān)于Java負(fù)載均衡算法實現(xiàn)之輪詢和加權(quán)輪詢的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-04-04