mybatisPlus-邏輯刪除
阿新 • • 發佈:2022-03-31
物理刪除:從資料庫中直接移除.
邏輯刪除:在資料庫中沒有移除,而是通過一個變數讓它失效. 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欄位,所以我們查詢的時候會過濾掉邏輯刪除的資料,但是資料依舊存在資料庫.