MybatisPlus实现逻辑删除
生活随笔
收集整理的這篇文章主要介紹了
MybatisPlus实现逻辑删除
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
delete
根據id刪除記錄
//查詢user表所有數據 @Test public void findAll() {List<User> users = userMapper.selectList(null);System.out.println(users); }批量刪除
//批量刪除 @Test public void testDeleteBatchIds() {int result = userMapper.deleteBatchIds(Arrays.asList(1,2));System.out.println(result); }簡單的條件查詢刪除
@Test public void testDeleteByMap() {HashMap<String, Object> map = new HashMap<>();map.put("name", "Helen");map.put("age", 18);int result = userMapper.deleteByMap(map);System.out.println(result); }邏輯刪除
- 物理刪除:真實刪除,將對應數據從數據庫中刪除,之后查詢不到此條被刪除數據
- 邏輯刪除:假刪除,將對應數據中代表是否被刪除字段狀態修改為“被刪除狀態”,之后在數據庫中仍舊能看到此條數據記錄
1)數據庫中添加 deleted字段
ALTER TABLE `user` ADD COLUMN `deleted` boolean(2)實體類添加deleted?字段
并加上 @TableLogic 注解 和 @TableField(fill = FieldFill.INSERT) 注解
@TableLogic @TableField(fill = FieldFill.INSERT) private Integer deleted;(3)元對象處理器接口添加deleted的insert默認值
@Override public void insertFill(MetaObject metaObject) {......this.setFieldValByName("deleted", 0, metaObject); }(4)application.properties 加入配置
此為默認值,如果你的默認值和mp默認的一樣,該配置可無
mybatis-plus.global-config.db-config.logic-delete-value=1 mybatis-plus.global-config.db-config.logic-not-delete-value=0(5)在 MybatisPlusConfig 中注冊 Bean
@Bean public ISqlInjector sqlInjector() {return new LogicSqlInjector(); }(6)測試邏輯刪除
- 測試后發現,數據并沒有被刪除,deleted字段的值由0變成了1
- 測試后分析打印的sql語句,是一條update
- 注意:被刪除數據的deleted 字段的值必須是 0,才能被選取出來執行邏輯刪除的操作
(7)測試邏輯刪除后的查詢
MyBatis Plus中查詢操作也會自動添加邏輯刪除字段的判斷
/*** 測試 邏輯刪除后的查詢:* 不包括被邏輯刪除的記錄*/@Testpublic void testLogicDeleteSelect() {User user = new User();List<User> users = userMapper.selectList(null);users.forEach(System.out::println);}測試后分析打印的sql語句,包含 WHERE deleted=0?
SELECT id,name,age,email,create_time,update_time,deleted FROM user WHERE deleted=0
?
總結
以上是生活随笔為你收集整理的MybatisPlus实现逻辑删除的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MybatisPlus实现分页
- 下一篇: MybatisPlus性能分析插件