SpringBoot整合MyBatis Plus實(shí)現(xiàn)基本CRUD與高級(jí)功能
1. 引言
Spring Boot是一款用于快速構(gòu)建Spring應(yīng)用程序的框架,而MyBatis Plus是MyBatis的增強(qiáng)工具,提供了許多方便實(shí)用的功能,包括基本CRUD操作、自動(dòng)填充、樂(lè)觀鎖、邏輯刪除等。本文將詳細(xì)介紹如何在Spring Boot項(xiàng)目中整合MyBatis Plus,并展示其基本CRUD功能以及高級(jí)功能的實(shí)現(xiàn)方式。
2. 項(xiàng)目搭建與依賴配置
首先,確保你已經(jīng)搭建好了Spring Boot項(xiàng)目。接下來(lái),我們需要添加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ù)庫(kù)連接信息和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ù)庫(kù)字段采用下劃線命名,而Java實(shí)體類采用駝峰命名。
3. 實(shí)現(xiàn)基本CRUD功能
3.1 創(chuàng)建實(shí)體類
假設(shè)我們有一個(gè)實(shí)體類User,對(duì)應(yīng)數(shù)據(jù)庫(kù)中的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;
}
在上述實(shí)體類中,使用了@TableName注解指定了對(duì)應(yīng)的數(shù)據(jù)庫(kù)表名,@TableId表示主鍵,@TableField用于自動(dòng)填充,@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接口,通過(guò)繼承該接口,即可獲得常見(jiàn)的CRUD功能,無(wú)需手動(dòng)編寫(xiě)SQL。
3.3 實(shí)現(xiàn)Service層
import com.baomidou.mybatisplus.extension.service.IService;
public interface UserService extends IService<User> {
}
創(chuàng)建一個(gè)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類,實(shí)現(xiàn)UserService接口,并繼承自ServiceImpl,實(shí)現(xiàn)了其中的方法。
3.4 控制器實(shí)現(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);
}
}
以上代碼中,通過(guò)注入UserService實(shí)現(xiàn)了基本的CRUD操作的接口。
4. 高級(jí)功能實(shí)現(xiàn)
4.1 自動(dòng)填充功能
MyBatis Plus提供了自動(dòng)填充功能,通過(guò)@TableField注解的fill屬性來(lái)指定填充的時(shí)機(jī),常用的值有FieldFill.INSERT和FieldFill.INSERT_UPDATE。
@TableField(fill = FieldFill.INSERT) private Date createTime; @TableField(fill = FieldFill.INSERT_UPDATE) private Date updateTime;
上述代碼中,createTime字段在插入時(shí)自動(dòng)填充,updateTime字段在插入和更新時(shí)自動(dòng)填充。
4.2 樂(lè)觀鎖功能
MyBatis Plus支持樂(lè)觀鎖的實(shí)現(xiàn),通過(guò)@Version注解在實(shí)體類的版本字段上添加樂(lè)觀鎖。
@Version private Integer version;
在更新時(shí),MyBatis Plus會(huì)自動(dòng)檢測(cè)版本字段,如果版本號(hào)不匹配,則更新失敗。
4.3 邏輯刪除功能
MyBatis Plus提供了邏輯刪除的功能,通過(guò)@TableLogic注解在實(shí)體類的邏輯刪除字段上添加邏輯刪除標(biāo)記。
@TableLogic private Integer deleted;
在進(jìn)行邏輯刪除操作時(shí),MyBatis Plus會(huì)更新這個(gè)字段的值,而不是物理刪除記錄。
5. 拓展:MyBatis Plus的其他功能
除了上述介紹的功能外,MyBatis Plus還提供了許多其他強(qiáng)大的功能,如條件構(gòu)造器、分頁(yè)查詢、性能分析、多租戶支持等。以下簡(jiǎn)單介紹一些常用的功能:
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 分頁(yè)查詢
MyBatis Plus支持簡(jiǎn)單的分頁(yè)查詢:
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
通過(guò)配置log-impl屬性,可以將SQL輸出到控制臺(tái),方便調(diào)試與優(yōu)化。
6. 總結(jié)
通過(guò)本文的介紹,我們學(xué)習(xí)了如何在Spring Boot項(xiàng)目中整合MyBatis Plus,并實(shí)現(xiàn)了基本的CRUD功能以及高級(jí)功能如自動(dòng)填充、樂(lè)觀鎖、邏輯刪除等。MyBatis Plus的強(qiáng)大功能極大地簡(jiǎn)化了數(shù)據(jù)庫(kù)操作,提高了開(kāi)發(fā)效率。在實(shí)際項(xiàng)目中,根據(jù)具體需求,我們可以更深入地了解MyBatis Plus提供的各種功能,以更好地應(yīng)對(duì)復(fù)雜的業(yè)務(wù)場(chǎng)景。希望通過(guò)本文的學(xué)習(xí),讀者能夠更加熟練地使用Spring Boot和MyBatis Plus進(jìn)行項(xiàng)目開(kāi)發(fā)。
以上就是SpringBoot整合MyBatis Plus實(shí)現(xiàn)基本CRUD與高級(jí)功能的詳細(xì)內(nèi)容,更多關(guān)于SpringBoot整合MyBatis Plus的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
- SpringBoot使用MyBatis實(shí)現(xiàn)數(shù)據(jù)的CRUD
- SpringBoot整合MyBatis實(shí)現(xiàn)CRUD操作項(xiàng)目實(shí)踐
- SpringBoot之整合MyBatis實(shí)現(xiàn)CRUD方式
- SpringBoot整合Mybatis Plus實(shí)現(xiàn)基本CRUD的示例代碼
- springboot+mybatis-plus實(shí)現(xiàn)內(nèi)置的CRUD使用詳解
- SpringBoot+Mybatis+Vue 實(shí)現(xiàn)商品模塊的crud操作
- 詳解springboot+mybatis-plue實(shí)現(xiàn)內(nèi)置的CRUD使用詳情
- SpringBoot整合Mybatis實(shí)現(xiàn)CRUD
- Spring Boot整合MyBatis-Plus實(shí)現(xiàn)CRUD操作的示例代碼
相關(guān)文章
Java 入門(mén)圖形用戶界面設(shè)計(jì)之事件處理上
圖形界面(簡(jiǎn)稱GUI)是指采用圖形方式顯示的計(jì)算機(jī)操作用戶界面。與早期計(jì)算機(jī)使用的命令行界面相比,圖形界面對(duì)于用戶來(lái)說(shuō)在視覺(jué)上更易于接受,本篇精講Java語(yǔ)言中關(guān)于圖形用戶界面的事件處理2022-02-02
Windows下后端如何啟動(dòng)SpringBoot的Jar項(xiàng)目
這篇文章主要介紹了Windows下后端如何啟動(dòng)SpringBoot的Jar項(xiàng)目問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-07-07
SpringBoot使用MockMvc進(jìn)行單元測(cè)試的實(shí)例代碼
在Spring Boot應(yīng)用程序中,使用MockMvc進(jìn)行單元測(cè)試是一種有效的方式,可以驗(yàn)證控制器的行為和API的正確性,在這篇博客中,我們將介紹如何使用MockMvc對(duì)用戶控制器進(jìn)行測(cè)試,感興趣的朋友可以參考下2024-01-01
詳解IntelliJ IDEA多窗口項(xiàng)目管理技巧
IntelliJ IDEA默認(rèn)每次打開(kāi)項(xiàng)目都會(huì)新建窗口,可通過(guò)設(shè)置強(qiáng)制單窗口多項(xiàng)目切換或默認(rèn)多開(kāi)項(xiàng)目,下面就來(lái)介紹一下IntelliJ IDEA多窗口項(xiàng)目管理技巧,感興趣的可以了解一下2025-09-09
解決spring mvc 多數(shù)據(jù)源切換,不支持事務(wù)控制的問(wèn)題
下面小編就為大家?guī)?lái)一篇解決spring mvc 多數(shù)據(jù)源切換,不支持事務(wù)控制的問(wèn)題。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-09-09
kafka運(yùn)維consumer-groups.sh消費(fèi)者組管理
這篇文章主要為大家介紹了kafka運(yùn)維consumer-groups.sh消費(fèi)者組管理,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11

