mybatis-plus實(shí)現(xiàn)邏輯刪除的示例代碼
一、什么是邏輯刪除?
邏輯刪除的本質(zhì)是修改操作,并不是真正的刪除,而是在表中將對(duì)應(yīng)的是否刪除標(biāo)識(shí)(del_flag)做修改操作。比如0是未刪除,1是刪除。在邏輯上數(shù)據(jù)是被刪除的,但數(shù)據(jù)本身依然存在庫(kù)中。
邏輯刪除sql語(yǔ)句為:
update user set del_flag=1 where id = 1 and del_flag=0
這種設(shè)計(jì),后端每次向數(shù)據(jù)庫(kù)查詢數(shù)據(jù)時(shí),只查del_flag=0(未刪除)的數(shù)據(jù)。拿上面sql舉例,那么客戶端進(jìn)行查詢id為1的信息,服務(wù)器就不會(huì)提供信息。
查詢sql為:
select id,name,del_flag from user where del_flag=0
二、為什么使用邏輯刪除?
- 方便數(shù)據(jù)恢復(fù),保護(hù)數(shù)據(jù)本身的價(jià)值。
- 保證數(shù)據(jù)連續(xù)性,對(duì)主鍵的影響可能會(huì)導(dǎo)致底層B+樹重建,而 delete 和 update id 都會(huì)影響主鍵。
事實(shí)上,在大多數(shù)公司里,都會(huì)采用邏輯刪除的方式,因?yàn)閿?shù)據(jù)的價(jià)值更大,被刪除的數(shù)據(jù)也非常有記錄價(jià)值,這樣的操作也并不會(huì)提高太多的操作難度。
三、在springboot使用Mybatis-Plus提供的邏輯刪除
字段類型支持說(shuō)明:支持所有數(shù)據(jù)類型(推薦使用 Integer,Boolean,LocalDateTime)
如果數(shù)據(jù)庫(kù)字段使用datetime,邏輯未刪除值和已刪除值支持配置為字符串null,另一個(gè)值支持配置為函數(shù)來(lái)獲取值如now()
3.1、在application.yml配置
mybatis-plus:
global-config:
db-config:
logic-delete-field: flag # 全局邏輯刪除的實(shí)體字段名(since 3.3.0,配置后可以忽略不配置步驟2)
logic-delete-value: 1 # 邏輯已刪除值(默認(rèn)為 1)
logic-not-delete-value: 0 # 邏輯未刪除值(默認(rèn)為 0)3.2、實(shí)體類字段上加上@TableLogic注解
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import java.io.Serializable;
/**
* 用戶訂單
*
* @author yunyan
*/
@TableName("t_user")
@Data
public class UserPO implements Serializable {
/**
* id
*/
@TableId(type = IdType.ASSIGN_ID)
private Long id;
/**
* 用戶名
*/
private String userName;
/**
* 密碼
*/
private String password;
/**
* 昵稱
*/
private String nickName;
/**
* 刪除標(biāo)識(shí)
*/
@TableLogic
private Integer delFlag;3.3、演示

3.4、UserMapper
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.example.testinterface.entity.po.UserPO;
import org.apache.ibatis.annotations.Mapper;
/**
* 用戶映射器
*
* @author yunyan
*/
@Mapper
public interface UserMapper extends BaseMapper<UserPO> {
}3.5、IUserService
/**
* 用戶服務(wù)
*
* @author yunyan
*/
public interface IUserService extends IService<UserPO> {
}3.6、UserServiceImpl
/**
* 用戶服務(wù)impl
*
* @author yunyan
*/
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, UserPO> implements IUserService {
}
3.7、controller
@RequestMapping("/open/del")
public ResultUtil del(UserParam userParam){
UserPO one = userService.getOne(new LambdaQueryWrapper<UserPO>()
.eq(UserPO::getUserName, userParam.getUserName()));
boolean b = userService.removeById(one);
System.out.println(b);
return ResultUtil.success(b);
}3.8、ResultUtil
@Data
public class ResultUtil {
private String code;
private String message;
private Object data;
public static ResultUtil success(Object data){
ResultUtil resultUtil = new ResultUtil();
resultUtil.setCode("200");
resultUtil.setMessage("請(qǐng)求成功");
resultUtil.setData(data);
return resultUtil;
}
}3.9、瀏覽器請(qǐng)求

3.10、數(shù)據(jù)庫(kù)的數(shù)據(jù)
可以看到,加了@TableLogic注解的字段對(duì)應(yīng)的數(shù)據(jù)庫(kù)字段,由0(未刪除)改為1(已刪除)

到此這篇關(guān)于mybatis-plus實(shí)現(xiàn)邏輯刪除的示例代碼的文章就介紹到這了,更多相關(guān)mybatis-plus 邏輯刪除內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- MyBatis-Plus邏輯刪除實(shí)現(xiàn)過(guò)程
- MyBatis-Plus中的邏輯刪除功能及實(shí)例分析
- mybatis-plus邏輯刪除與唯一約束沖突問(wèn)題
- MyBatis-Plus實(shí)現(xiàn)邏輯刪除功能解析
- Mybatis-Plus邏輯刪除的用法詳解
- mybatis-plus實(shí)現(xiàn)邏輯刪除的示例代碼
- MyBatis-Plus中的邏輯刪除使用詳解
- MyBatis-Plus邏輯刪除和字段自動(dòng)填充的實(shí)現(xiàn)
- mybatis-plus 如何配置邏輯刪除
- MyBatis-Plus 邏輯刪除的實(shí)現(xiàn)示例
相關(guān)文章
Java?MCP?實(shí)戰(zhàn)之如何構(gòu)建跨進(jìn)程與遠(yuǎn)程的工具服務(wù)
MCP協(xié)議由Anthropic推出,支持stdio/SSE/Streaming通訊,提供工具、提示、資源原語(yǔ),適用于AI與外部服務(wù)集成,兼容Java及多框架,具備鑒權(quán)、斷線重連等生產(chǎn)特性,助力構(gòu)建分布式系統(tǒng),本文給大家介紹Java MCP實(shí)戰(zhàn)之如何構(gòu)建跨進(jìn)程與遠(yuǎn)程的工具服務(wù),感興趣的朋友一起看看吧2025-07-07
Mybatis-Plus開發(fā)提速器mybatis-plus-generator-ui詳解
這篇文章主要介紹了Mybatis-Plus開發(fā)提速器mybatis-plus-generator-ui,本文簡(jiǎn)要介紹一款基于Mybatis-Plus的代碼自助生成器,文章通過(guò)實(shí)例集成的方式來(lái)詳細(xì)講解mybatis-plus-generator-ui,從相關(guān)概念到實(shí)際集成案例,以及具體的擴(kuò)展開發(fā)介紹,需要的朋友可以參考下2022-11-11
詳解SpringBoot開發(fā)案例之整合定時(shí)任務(wù)(Scheduled)
本篇文章主要介紹了詳解SpringBoot開發(fā)案例之整合定時(shí)任務(wù)(Scheduled),具有一定的參考價(jià)值,有興趣的可以了解一下2017-07-07
Java中的BaseTypeHandler自定義類型轉(zhuǎn)換器的使用
這篇文章主要介紹了Java中的BaseTypeHandler自定義類型轉(zhuǎn)換器的使用,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-05-05
Java后端開發(fā)中Service層依賴注入的最佳實(shí)踐
文章主要探討了在Java后端開發(fā)中,Service層依賴注入Mapper還是其他Service的問(wèn)題,通過(guò)分析三層架構(gòu)的職責(zé)劃分,文章指出了在不同場(chǎng)景下選擇合適的注入方式,需要的朋友可以參考下2026-01-01
基于Java代碼實(shí)現(xiàn)數(shù)字在數(shù)組中出現(xiàn)次數(shù)超過(guò)一半
這篇文章主要介紹了基于Java代碼實(shí)現(xiàn)數(shù)字在數(shù)組中出現(xiàn)次數(shù)超過(guò)一半的相關(guān)資料,需要的朋友可以參考下2016-02-02
Java實(shí)現(xiàn)多選批量刪除功能(vue+Element)
這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)多選批量刪除功能,包括前端vue實(shí)現(xiàn)代碼文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-08-08
SpringBoot核心@SpringBootApplication使用介紹
這篇文章主要介紹了SpringBoot核心@SpringBootApplication的使用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-03-03

