Mybatis-Plus邏輯刪除


開發系統時,有時候在實現功能時,刪除操作需要實現邏輯刪除,所謂邏輯刪除就是將數據標記為刪除,而並非真正的物理刪除(非DELETE操作),
查詢時需要攜帶狀態條件,確保被標記的數據不被查詢到。這樣做的目的就是避免數據被真正的刪除。

  給表增加deleted字段,用於表示數據是否被刪除,可以定義:1代表刪除,0代表未刪除。

  同時,也修改實體,增加deleted屬性並且添加@TableLogic注解:

    @TableLogic
    private int deleted;

  在application.properties中配置(基於springboot):

    # 邏輯已刪除值(默認為 1)
    mybatis-plus.global-config.db-config.logic-delete-value=1
    # 邏輯未刪除值(默認為 0)
    mybatis-plus.global-config.db-config.logic-not-delete-value=0

  測試刪除:實際執行的是更新操作

    UPDATE
      tb_user SET deleted=1 WHERE id=? AND deleted=0

@Test
public void testDeleteById(){
    this.userMapper.deleteById(2L);
}

    測試查詢:會自動添加上 deleted = ?這個條件

      SELECT
        id,user_name,password,name,age,email,version,deleted FROM tb_user WHERE id=? AND deleted=0

@Test
public void testSelectById(){
    User user = this.userMapper.selectById(2L);
    System.out.println(user);
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM