您好,登錄后才能下訂單哦!
刪除又分為邏輯刪除和物理刪除,那么它們有什么區別呢?
物理刪除:真實刪除,將對應數據從數據庫中刪除,之后查詢不到此條被刪除數據。
邏輯刪除:假刪除,將對應數據中代表是否被刪除字段狀態修改為“被刪除狀態”,之后在數據庫中仍舊能看到此條數據記錄。
在我們日常開發中,為了保留數據,經常會使用邏輯刪除的方式進行數據刪除,下面我們就來看看物理刪除與邏輯刪除怎么實現的吧
首先假設我有這樣一張表
實體類:
package com.atguigu.mybatis_plus.entity; import java.util.Date; import com.baomidou.mybatisplus.annotation.FieldFill; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableLogic; import lombok.Data; @Data public class User { @TableId(type = IdType.AUTO) private Long id; private String name; private Integer age; private String email; @TableField(fill = FieldFill.INSERT) private Date createTime; // @TableField(fill = FieldFill.UPDATE) @TableField(fill = FieldFill.INSERT_UPDATE) private Date updateTime; }
userMapper接口:
package com.atguigu.mybatis_plus.mapper; import com.atguigu.mybatis_plus.entity.User; import com.baomidou.mybatisplus.core.mapper.BaseMapper; // 繼承BaseMapper后UserMapper就具有了CRUD功能 public interface UserMapper extends BaseMapper<User>{ }
一、物理刪除
1、根據id刪除記錄
@Test public void testLogicDelete() { int count = userMapper.deleteById(1L); // 刪除id為1的數據 System.out.println("受影響的行數"+count); }
2、批量刪除
@Test public void testDeleteBatchIds() { int result = userMapper.deleteBatchIds(Arrays.asList(2, 3, 4)); // 刪除id為2,3,4的數據 System.out.println(result); }
結果:
物理刪除比較簡單,接下來我們看看邏輯刪除怎么實現吧!
二、邏輯刪除
(1)數據庫修改,添加 deleted字段
(2)實體類修改,添加deleted 字段,并加上 @TableLogic 注解
/* 加@TableLogic的情況下,程序內部會將delete語句變為update語句 實際上我們寫的代碼并不需要做出什么改變 */ @TableLogic private Integer deleted;
(3)測試
/** * 邏輯刪除 */ @Test public void testLogicDelete() { int count = userMapper.deleteById(5L); System.out.println("受影響的行數"+count); }
結果:
(5)測試邏輯刪除后的查詢,MyBatis Plus中查詢操作也會自動添加邏輯刪除字段的判斷
@Test public void testSelect() { List<User> users = userMapper.selectList(null); // 查詢所有記錄 users.forEach(System.out::println); // 遍歷輸出 }
結果:
總結
到此這篇關于MybatisPlus中的刪除和邏輯刪除及區別介紹的文章就介紹到這了,更多相關MybatisPlus刪除和邏輯刪除內容請搜索億速云以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持億速云!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。