1. 程式人生 > 其它 >mybatisPlus-邏輯刪除

mybatisPlus-邏輯刪除

承接:mybatisPlus-刪除測試

物理刪除:從資料庫中直接移除.

邏輯刪除:在資料庫中沒有移除,而是通過一個變數讓它失效. deleted = 0 => deleted = 1 (管理員可以檢視被刪除的記錄,防止資料的丟失,類似於回收站)

1 在資料庫user表中新增邏輯刪除欄位

2 在User實體類中新增對應的屬性

src/main/java/com/lv/mybatis_plus/pojo/User.java

@TableLogic //邏輯刪除註解
private Integer deleted;

3 在配置類中註冊邏輯刪除元件

src/main/java/com/lv/mybatis_plus/pojo/User.java

//註冊邏輯刪除元件
@Bean
public ISqlInjector sqlInjector(){
    return new LogicSqlInjector();
}

4 在配置檔案中編寫邏輯刪除的配置

src/main/resources/application.properties

#配置邏輯刪除
mybatis-plus.global-config.db-config.logic-delete-value=1
mybatis-plus.global-config.db-config.logic-not-delete-value=0

5 在測試類中修改根據id刪除的方法,執行

src/test/java/com/lv/mybatis_plus/MybatisPlusApplicationTests.java

//根據id刪除
@Test
public void testDeleteById(){
    userMapper.deleteById(1L);
}

6 檢視資料庫

7 檢視控制檯日誌輸出

通過檢視sql語句,能夠看出執行的是更新操作,並不是刪除操作,記錄依然在資料庫中,但是deleted值已經變化了

8 再執行一下查詢方法,查詢id為1的使用者

//測試查詢
@Test
public void testSelectById(){
    User user = userMapper.selectById(1L);
    System.out.println(user);
}

9 檢視控制檯

觀察查詢結果和sql語句發現.在查詢時會自動拼接deleted欄位,所以我們查詢的時候會過濾掉邏輯刪除的資料,但是資料依舊存在資料庫.