删除操作
删除操作
-
基本删除操作
//删除操作 根据ID删除 单个
@Test
public void testdelete(){
mapper.deleteById(1420616607406571522L);
}
@Test//批量删除
public void testdelete02(){
mapper.deleteBatchIds(Arrays.asList(1,2,3));//删除id为1 2 3 的用户
}
//通过map操作
@Test
public void testmapdelete(){
HashMap<String, Object> map = new HashMap<>();
map.put("name","顶顶顶");//删除name为顶顶顶的用户
mapper.deleteByMap(map);
}
逻辑删除
-
物理删除:从数据库直接移除
-
逻辑移除:在数据库中没有直接删除,而是通过一个变量让他失效
场景:管理员可以查看被删除的数据,防止数据丢失,类似于回收站
使用:
- 在数据库中增加一个delete_flag字段 默认值为0

- 实体类同步
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
private Long id;
private String name;
private Integer age;
private String email;
@Version //乐观锁的注解
private int version;
// 自动填充内容
@TableField(fill = FieldFill.INSERT)
private Date createTime;
@TableField(fill = FieldFill.INSERT_UPDATE)
private Date updateTime;
@TableLogic //逻辑删除注解
private int deleteFlag;
}
-
配置逻辑删除
高版本可以不需要组件,只需要注解。
// 逻辑删除组件!
@Bean
public ISqlInjector sqlInjector() {
return new LogicSqlInjector();
}
# 配置逻辑删除
mybatis-plus.global-config.db-config.logic-delete-value=1
mybatis-plus.global-config.db-config.logic-not-delete-value=0
- 测试删除
@Test
public void testdelete(){
mapper.deleteById(4);
}
//UPDATE user SET delete_flag=1 WHERE id=? AND delete_flag=0
可以看到,测试的是删除操作,实际上走的是更新操作,并不是删除操作
测试查询 会跟上where deleted=0的sql 非管理员

浙公网安备 33010602011771号