狂神说Java:https://www.bilibili.com/video/BV17E411N7KN?p=13学习笔记
一、根据id删除
@Test
public void testDeleteById(){
userMapper.deleteById(1L);
}
二、通过id批量删除
@Test
public void testDeleteBatchID(){
userMapper.deleteBatchIds(Arrays.asList(2,3,4));
}
三、通过map删除
@Test
public void testDeleteMap(){
HashMap<String, Object> map = new HashMap<>();
map.put("name","hello");
userMapper.selectByMap(map);
四、逻辑删除
- 物理删除:把数据从数据库中移除
- 逻辑删除:数据还在数据库中,但通过一个变量让它失效。如delete = 0 => delete = 1 (应用场景如:管理员可以查看删除记录,防止数据丢失,类似于回收站)
1.在数据库表中增加deleted字段
2.在实体类中添加属性和逻辑删除注解@TableLogic
@TableLogic //逻辑删除
private Integer deleted;
3.在MybatisPlusConfig配置类中添加配置
//逻辑删除组件
@Bean
public ISqlInjector sqlInjector(){
return new LogicSqlInjector();
}
4.在application.yml中添加配置
mybatis-plus:
global-config:
db-config:
logic-delete-field: deleted # 全局逻辑删除的实体字段名(since 3.3.0,配置后可以忽略不配置步骤2)
logic-delete-value: 1 # 逻辑已删除值(默认为 1)
logic-not-delete-value: 0 # 逻辑未删除值(默认为 0)
5.测试结果
本质是更新操作,而不是删除
查询3号用户
@Test
public void testSelectById(){
User user = userMapper.selectById(3L);
System.out.println(user);
}
查询时自动过滤被逻辑删除的字段