MybatisPlus修改 刪除操作


 

2、自動填充

項目中經常會遇到一些數據,每次都使用相同的方式填充,例如記錄的創建時間,更新時間等。

我們可以使用MyBatis Plus的自動填充功能,完成這些字段的賦值工作:

1)數據庫表中添加自動填充字段

在User表中添加datetime類型的新的字段 create_time、update_time

2)實體類上添加屬性以及注解

@Data public class User { ... //注意使用小駝峰,框架會自動將下划線轉為小駝峰 //設置自動填充時機 @TableField(fill = FieldFill.INSERT) private Date createTime; @TableField(fill = FieldFill.INSERT_UPDATE) private Date updateTime; }

3)實現元對象處理器接口

@Component public class MyMetaObjectHandler implements MetaObjectHandler { //使用mp實現添加的自動填充時,這個方法就會執行 @Override public void insertFill(MetaObject metaObject) { this.setFieldValByName("createTime", new Date(), metaObject); this.setFieldValByName("updateTime", new Date(), metaObject); } //使用mp實現更新的自動填充時,這個方法就會執行 @Override public void updateFill(MetaObject metaObject) { this.setFieldValByName("updateTime", new Date(), metaObject); } }

注意:不要忘記添加 @Component 注解

delete

1、根據id刪除記錄

//測試刪除,物理刪除 @Test void testDelete() { int row = userMapper.deleteById(1L); System.out.println(row); }

可以看到id為1的數據被刪除

在這里插入圖片描述2、批量刪除

//批量物理刪除 @Test void testDeleteBatch(){ int row = userMapper.deleteBatchIds(Arrays.asList(2, 3, 4)); System.out.println(row); }

根據條件刪除:

Map<String,Object> columnMap = new HashMap<>(); columnMap.put("gender",0); columnMap.put("age",18); emplopyeeDao.deleteByMap(columnMap);
 

3、邏輯刪除

  • 物理刪除:真實刪除,將對應數據從數據庫中刪除,之后查詢不到此條被刪除數據
  • 邏輯刪除:假刪除,將對應數據中代表是否被刪除字段狀態修改為“被刪除狀態”,之后在數據庫中仍舊能看到此條數據記錄

1)數據庫中添加 deleted字段

ALTER TABLE `user` ADD COLUMN `deleted` boolean DEFAULT 0

在這里插入圖片描述

2)實體類添加deleted 字段

    @TableLogic private Integer deleted;

3)application.properties 加入配置

此為默認值,如果你的默認值和mp默認的一樣,該配置可無

mybatis-plus.global-config.db-config.logic-delete-value=1
mybatis-plus.global-config.db-config.logic-not-delete-value=0

4)在 MybatisPlusConfig 中注冊 邏輯刪除Bean

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

 


免責聲明!

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



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