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