0
点赞
收藏
分享

微信扫一扫

myBatisPlus-删除

物理删除

真实删除,将对应数据从数据库中删除,之后会查询不到此条被删除数据

根据 ID 删除数据

@Test
public void deleteById() {
    int result = userMapper.deleteById(1L);
    System.out.println(result);
}

myBatisPlus-删除_字段

批量删除

@Test
public void batchDeleteById() {
    int result = userMapper.deleteBatchIds(Arrays.asList(2, 3, 4));
    System.out.println(result);
}

myBatisPlus-删除_字段_02

简单条件查询删除

@Test
public void deleteByMap() {
    Map<String, Object> paramMap = new HashMap<>();
    paramMap.put("name", "BNTang");
    paramMap.put("age", 23);

    int result = userMapper.deleteByMap(paramMap);
    System.out.println(result);
}

myBatisPlus-删除_数据_03

逻辑删除

假删除,将对应数据中代表是否被删除字段状态修改为 “被删除状态”,之后在数据库中仍旧能看到此条数据记录

数据库中添加 ​​deleted​​ 字段

ALTER TABLE `mybatisplus_db`.`user` 
ADD COLUMN `deleted` int NULL AFTER `version`;

实体类中添加 ​​deleted​​ 字段

myBatisPlus-删除_MyBatisPlus_04

@TableLogic
@TableField(fill = FieldFill.INSERT)
private Integer deleted;

元对象处理器接口添加 ​​deleted​​ 的 insert 默认值

myBatisPlus-删除_MyBatisPlus_05

this.setFieldValByName("deleted", 0, metaObject);

修改 ​​application.properties​​ 加入配置

myBatisPlus-删除_MyBatisPlus_06

此配置为配置默认值,如果你的默认值和 mp 默认的一样, 该配置可无

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

注册 Bean 修改,​​Config.java​

/**
 * mp逻辑删除的配置
 */
@Bean
public ISqlInjector iSqlInjector() {
    return new LogicSqlInjector();
}

测试,测试流程为,首先调用我们之前的插入方法插入一条新的记录,然后在调用删除方法即可发现效果

myBatisPlus-删除_字段_07

myBatisPlus-删除_数据库_08

myBatisPlus-删除_数据_09

myBatisPlus-删除_数据库_10

注意事项

  • 添加逻辑删除后
  • 使用查询, 查询的内容只有标记为0的被查出来

myBatisPlus-删除_字段_11

如上查询发现没有数据,在看下图我数据库中全部为 ​​null​​​ 所以没有,我在把这个 ​​null​​ 改为 0,运行结果如下

myBatisPlus-删除_数据_12

myBatisPlus-删除_数据_13

举报

相关推荐

0 条评论