日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

MybatisPlus实现逻辑删除

發布時間:2024/4/13 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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,才能被選取出來執行邏輯刪除的操作
/*** 測試 邏輯刪除*/@Test public void testLogicDelete() {int result = userMapper.deleteById(1L);System.out.println(result); }

(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实现逻辑删除的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。