c语言编程笔录

首页 >   > 笔记大全

笔记大全

mybatisplus逻辑删除如何实现

更新时间:2023-07-19
MyBatis Plus 是一个基于 MyBatis 的增强工具,它简化了开发过程并提供了许多便捷的功能。逻辑删除是 MyBatis Plus 提供的一个特性,它允许开发者在不删除数据库记录的情况下实现“删除”操作。本文将介绍如何在 MyBatis Plus 中实现逻辑删除功能。

1. 配置逻辑删除属性

首先,在需要实现逻辑删除的实体类中添加一个逻辑删除的属性,并使用注解进行配置。例如:

@TableName("user")
public class User {

    @TableId(type = IdType.AUTO)
    private Long id;
    
    private String name;
    
    @TableLogic // 添加逻辑删除注解
    private Integer deleted;
    
    // 省略其他属性、Getter 和 Setter 方法
}

在上述示例中,使用了 @TableLogic 注解将 deleted 属性标记为逻辑删除字段。

2. 配置逻辑删除的值

接下来,需要配置逻辑删除属性的值。MyBatis Plus 默认将 deleted 字段值为 1 视为已删除,值为 0 视为未删除。如果需要修改这些配置,可以在 MyBatis Plus 的配置文件中进行自定义:

mybatis-plus:
  global-config:
    db-config:
      logic-delete-value: 2         # 自定义逻辑删除值
      logic-not-delete-value: 0     # 自定义未删除值

在上述示例中,将逻辑删除值修改为 2,将未删除值修改为 0。

3. 执行逻辑删除操作

当以上配置完成后,即可在代码中执行逻辑删除操作。例如:

@Service
public class UserServiceImpl extends ServiceImpl implements UserService {

    @Override
    public boolean removeUserById(Long id) {
        User user = new User();
        user.setId(id);
        user.setDeleted(1); // 设置逻辑删除值
        return updateById(user);
    }
}

在上述示例中,通过设置逻辑删除值为 1,调用 updateById 方法实现逻辑删除操作。在执行该方法后,对应的数据库记录的 deleted 字段值将被更新为 1,标记为已删除。

4. 查询已删除和未删除的数据

使用 MyBatis Plus 进行逻辑删除后,可以通过自动注入的 Mapper 接口方法实现查询已删除和未删除的数据。

@Service
public class UserServiceImpl extends ServiceImpl implements UserService {

    @Override
    public List listAllUsers() {
        return list();
    }

    @Override
    public List listDeletedUsers() {
        QueryWrapper queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("deleted", 1); // 查询已删除数据
        return list(queryWrapper);
    }

    @Override
    public List listNotDeletedUsers() {
        QueryWrapper queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("deleted", 0); // 查询未删除数据
        return list(queryWrapper);
    }
}

在上述示例中,通过调用 list 方法可以查询所有用户,调用 listDeletedUsers 方法可以查询已删除用户,调用 listNotDeletedUsers 方法可以查询未删除用户。

总结:通过配置逻辑删除属性、逻辑删除的值以及执行相关操作,可以在 MyBatis Plus 中实现逻辑删除功能。逻辑删除能够保留数据库记录的完整性,同时避免了物理删除带来的数据丢失风险。使用 MyBatis Plus 的逻辑删除特性,可以简化开发过程,提高代码可读性和可维护性。