Mybatis-Plus邏輯刪除的用法詳解
簡介
說明
本文介紹Mybatis-Plus的邏輯刪除的用法。
刪除功能是項目中經(jīng)常見到的需求。比如:需要刪除一個訂單,一般不會把實際數(shù)據(jù)刪除,而是邏輯刪除。一般表中有一個is_deleted字段標識該用戶是否被刪除,0 表示未刪除 1 表示已刪除。
配置(非必須)
配置刪除未刪除的狀態(tài)碼
配置未刪除、已刪除分別標識的狀態(tài)碼是什么,這里采用的yml格式。
mybatis-plus:
global-config:
db-config:
# 1 代表已刪除。默認是1。也可寫為字段名,如:id,這樣刪除時會將id的值寫到邏輯刪除字段
logic-delete-value: 1
# 0 代表未刪除。默認是0
logic-not-delete-value: 0全局配置字段名(可不配置)
若項目代碼比較規(guī)范,所有表的邏輯刪除字段使用相同的名稱(比如:deleted_flag),我們可以在 application.properties 中添加如下統(tǒng)一的配置,這樣對應的實體類字段上就不需要再添加 @TableLogic 注解了:
注意:如果設(shè)置了全局邏輯刪除字段值,實體類上仍然有 @TableLogic 則以實體上的為準,忽略全局。
mybatis-plus:
global-config:
db-config:
logic-delete-field: deleted_flagentity
實體類對應的字段上加上注解@TableLogic
@Data
@TableName("t_user")
public class User {
@TableId(value = "id", type = IdType.AUTO)
private Long id;
@TableLogic
private String deleted;
}數(shù)據(jù)庫
數(shù)據(jù)庫deleted列,設(shè)置為tinyint類型,長度為1
測試
插入測試
插入時,sql語句不會涉及邏輯刪除的字段。
查詢、修改測試
使用MP邏輯刪除的功能之后,執(zhí)行查詢、修改的方法,MP會為我們自動加上未刪除的條件。自定義sql除外
@Test
public void select(){
List<User> users = userMapper.selectList(Wrappers.<User>lambdaQuery().eq(User::getAge, 18));
users.forEach(System.out::println);
}
@Test
public void update(){
User user = new User();
user.setEmail("Test@email.com");
int update = userMapper.update(user, Wrappers.<User>lambdaQuery().eq(User::getAge, 18));
System.out.println(update);
}DEBUG==> Preparing: SELECT id,login_name,name,password,email,salt,sex,age,phone,user_type,status,organization_id,create_time,is_delete FROM sys_user WHERE deleted='0' AND age = ? DEBUG==> Parameters: 18(Integer) DEBUG<== Total: 0 DEBUG==> Preparing: UPDATE sys_user SET email=? WHERE deleted='0' AND age = ? DEBUG==> Parameters: Test@email.com(String), 18(Integer) DEBUG<== Updates: 0
刪除測試
(執(zhí)行的SQL語句是UPDATE)
@Test
public void delete() {
int i = userMapper.deleteById(1);
System.out.println(i);
}DEBUG==> Preparing: UPDATE sys_user SET is_delete='1' WHERE id=? AND deleted='0' DEBUG==> Parameters: 1(Integer) DEBUG<== Updates: 1
不查詢is_deleted字段
@TableField(select = false)即可。還可使用Wrapper的select表達式來排除某些查詢字段,只是通過注解的方式更方便。
@TableLogic
@TableField(select = false)
private String deleted;到此這篇關(guān)于Mybatis-Plus邏輯刪除的用法詳解的文章就介紹到這了,更多相關(guān)Mybatis-Plus邏輯刪除內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
IDEA指定Maven的settings不生效問題的解決方法
在IntelliJ IDEA中手動指定Maven settings文件未生效,主要因用戶目錄和全局配置優(yōu)先級高于IDEA指定的文件,下面就來介紹一下該問題的解決,感興趣的可以了解一下2025-08-08
java 實現(xiàn)簡單圣誕樹的示例代碼(圣誕節(jié)快樂)
這篇文章主要介紹了java 實現(xiàn)簡單圣誕樹的示例代碼(圣誕節(jié)快樂),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-12-12
springboot 2.0 mybatis mapper-locations掃描多個路徑的實現(xiàn)
這篇文章主要介紹了springboot 2.0 mybatis mapper-locations掃描多個路徑的實現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-07-07

