中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么在MybatisPlus中實現一個邏輯刪除功能

發布時間:2020-12-28 14:42:23 來源:億速云 閱讀:317 作者:Leah 欄目:開發技術

這篇文章給大家介紹怎么在MybatisPlus中實現一個邏輯刪除功能,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

邏輯刪除

你有沒有見過某些網站進行一些刪除操作之后,你看不到記錄了但是管理員卻能夠查看到。這里就運用到了邏輯刪除。

什么是邏輯刪除?

邏輯刪除的本質是修改操作,所謂的邏輯刪除其實并不是真正的刪除,而是在表中將對應的是否刪除標識(deleted)或者說是狀態字段(status)做修改操作。比如0是未刪除,1是刪除。在邏輯上數據是被刪除的,但數據本身依然存在庫中。
對應的SQL語句:

update user set deleted=1 where id =1 and deleted=0

update 表名 set deleted = 1 where id = 1;語句表示,在該表中將id為1的信息進行邏輯刪除,那么客戶端進行查詢id為1的信息,服務器就不會提供信息。倘若想繼續為客戶端提供該信息,可將 deleted 更改為 0 。
查找的話呢是通過加上條件deleted=0

select * from user where deleted=0

來自官網的配置,這里直接復制

第一步 添加全局配置

mybatis-plus:
 global-config:
  db-config:
   logic-delete-field: flag # 全局邏輯刪除的實體字段名(since 3.3.0,配置后可以忽略不配置步驟2)
   logic-delete-value: 1 # 邏輯已刪除值(默認為 1)
   logic-not-delete-value: 0 # 邏輯未刪除值(默認為 0)

第二步、在實體類上添加@TableLogic注解

@TableLogic
private Integer deleted;//對應的實體字段,實體字段需要根據數據庫字段命名

這樣就會在預編譯sql中自動給這個字段設置的值就是全局配置設置的值

當然也可以設置局部生效 單個實體生效(不推薦)只需要在注解中添加

完整的實體示例

import com.baomidou.mybatisplus.annotation.TableLogic;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.time.LocalDateTime;

@Data
@AllArgsConstructor
@NoArgsConstructor
public class User implements Serializable {

 private long id;
 private String name;
 private long age;
 private String email;
 private long managerId;
 private LocalDateTime createTime;
 private LocalDateTime updateTime;
 private long version;
 
 @TableLogic(value = "0",delval = "1") //value表示邏輯未刪除值,delval表示邏輯刪除設置的值
 private long deleted;
 
}

當然不建議這樣操作,一般直接@TableLogic然后通過全局設置即可

測試代碼,其中的傳入的是主鍵 劉紅雨的id

import org.junit.jupiter.api.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import top.huashengshu.demo.dao.UserMapper;

@SpringBootTest
@RunWith(SpringRunner.class)
class DemoApplicationTest {

  @Autowired
  UserMapper userMapper;

  @Test
  public void deleteTest(){
    int rows = userMapper.deleteById(1094592041087729666L);
    System.out.println("影響行數:"+rows);
  }

}

執行結果:

怎么在MybatisPlus中實現一個邏輯刪除功能

查看表中數據:

怎么在MybatisPlus中實現一個邏輯刪除功能

關于怎么在MybatisPlus中實現一個邏輯刪除功能就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

资中县| 景泰县| 绥阳县| 宁南县| 玛曲县| 彝良县| 祁阳县| 安丘市| 屏南县| 容城县| 阳西县| 贵溪市| 惠来县| 西乡县| 彭泽县| 阿克陶县| 连州市| 山丹县| 曲沃县| 枣庄市| 宜兰市| 沧州市| 民和| 承德市| 扎赉特旗| 政和县| 康平县| 丰台区| 贡山| 犍为县| 阜南县| 普洱| 蓬溪县| 通化市| 新平| 许昌县| 沾化县| 万全县| 曲阜市| 长海县| 文登市|