SpringBoot整合MyBatis Plus實現(xiàn)基本CRUD與高級功能
1. 引言
Spring Boot是一款用于快速構(gòu)建Spring應(yīng)用程序的框架,而MyBatis Plus是MyBatis的增強(qiáng)工具,提供了許多方便實用的功能,包括基本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屬性來指定填充的時機(jī),常用的值有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還提供了許多其他強(qiáng)大的功能,如條件構(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的強(qiáng)大功能極大地簡化了數(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)文章
Windows下后端如何啟動SpringBoot的Jar項目
這篇文章主要介紹了Windows下后端如何啟動SpringBoot的Jar項目問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-07-07
SpringBoot使用MockMvc進(jìn)行單元測試的實例代碼
在Spring Boot應(yīng)用程序中,使用MockMvc進(jìn)行單元測試是一種有效的方式,可以驗證控制器的行為和API的正確性,在這篇博客中,我們將介紹如何使用MockMvc對用戶控制器進(jìn)行測試,感興趣的朋友可以參考下2024-01-01
解決spring mvc 多數(shù)據(jù)源切換,不支持事務(wù)控制的問題
下面小編就為大家?guī)硪黄鉀Qspring mvc 多數(shù)據(jù)源切換,不支持事務(wù)控制的問題。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-09-09
kafka運維consumer-groups.sh消費者組管理
這篇文章主要為大家介紹了kafka運維consumer-groups.sh消費者組管理,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11

