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 ServiceImplimplements 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 ServiceImplimplements 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 的逻辑删除特性,可以简化开发过程,提高代码可读性和可维护性。