天天看點

mybatis-Plus 邏輯删除邏輯删除

邏輯删除

第一步:配置

mybatis-plus:
  global-config:
    db-config:
      logic-delete-field: isDeleted #實體名稱
      logic-delete-value: 1 # 已經删除标志值
      logic-not-delete-value: 0 #未删除标志值
           

第二步:資料庫

mybatis-Plus 邏輯删除邏輯删除

字段類型支援說明:

  • 支援所有資料類型(推薦使用 Integer,Boolean,LocalDateTime)
  • 如果資料庫字段使用datetime,邏輯未删除值和已删除值支援配置為字元串null,另一個值支援配置為函數來擷取值如now()**

第三步:實體@TableLogic标記字段

@TableLogic
    private Integer isDeleted;
           

此時,基本配置已經完成,但是當inset的時候我們發現其資料上is_deleted字段為空。顯然,我們邏輯删除對insert并不會自動填充

下面是官方給出的解決方案:

  • 字段在資料庫定義預設值**(推薦)**
  • insert 前自己 set 值
  • 使用自動填充功能

配置完後,我們再進行insert delete select都成功,即:

  • 查找: 追加where條件過濾掉已删除資料,且使用 wrapper.entity 生成的where條件會忽略該字段
  • 更新: 追加where條件防止更新到已删除資料,且使用 wrapper.entity 生成的where條件會忽略該字段
  • 删除: 轉變為 更新,将is_deleted字段設定為删除值1

說明

  • 邏輯删除是為了友善資料恢複和保護資料本身價值等等的一種方案,但實際就是删除。
  • 如果你需要頻繁查出來看就不應使用邏輯删除,而是以一個狀态去表示