一种软删除实现的枚举模型对象

什么是软删除和硬删除

软删除

  软删除,也称为逻辑删除或标记删除,并不是真正的从数据库中删除数据,而是通过设置一个字段(如isDelete或state)来标记删除状态。当该字段为0时,表示数据未被删除;当该字段为1时,表示数据已被删除。这种删除方式的优势在于数据可恢复性较高,只需要根据标记进行恢复即可。

软删除的优点:
  数据恢复:软删除可以保留被删除数据的备份,方便在需要时进行数据恢复。
  历史记录:软删除可以保留删除操作的历史记录,有助于审计和追踪数据的变化。
  数据完整性:软删除可以保持数据表的完整性约束,避免因删除操作破坏关联关系或约束条件。

软删除的缺点:
  索引和约束:软删除需要处理索引和约束条件的问题,确保查询和更新操作的正确性和性能。
  存储空间:软删除会占用额外的存储空间,因为被删除的数据仍然存在于数据库中。
  标记删除的无效数据太多,影响数据库存储速度。
  占用有效的磁盘空间。

硬删除

  硬删除,也称为物理删除,是直接从数据库中移除数据。例如,当用户执行某个删除操作时,数据库会执行相应的delete操作。使用这种删除方式的话,数据是不可恢复的,如果一定要恢复的话,只能通过日志。

硬删除的优点:
  简单快速:硬删除操作简单,速度快,适用于大量数据的快速清除。
  不占用额外空间:硬删除不会保留被删除数据的备份,因此不会占用额外的存储空间。

硬删除的缺点:
  数据恢复困难:硬删除后,被删除的数据很难恢复,甚至可能无法恢复。
  可能破坏数据完整性:硬删除可能会导致数据完整性约束被破坏,关联关系或约束条件可能会受到影响。

软删除的实现

新建模型对象,我们可以给数据库增加一个状态字段:status

对status字段进行增强

model示例

@Data
public class Vendor extends BaseModel {
    /** 唯一编号 */
    private Integer id ;
    /** 供应商名称 */
    private String name ;
    /** 图片地址 */
    private String img ;
    /** 排序 */
    private Integer seq =1;
    /** 详细说明 */
    private String brief ;
    /** 状态 */
    private Integer status=1 ;

    /**status的增强数属性,数据库不存在该字段**/
    private String statusX;

    /**对status的增强方法 **/
     public String getStatusX() {
         VendorStatus vendorStatus=VendorStatus.findByCode(this.status);
         if (vendorStatus!=null){
             return vendorStatus.getDesc();
         }
         return "未定义";
     }

     /** 省份 */
    private String province ;
    /** 城市 */
    private String city ;
    /** 区域 */
    private String county ;
    /** 具体地址 */
    private String address ;
}

新建一个枚举类型

public enum VendorStatus {

    SALED(1, "正常"),
    SELLING(0, "注销");

    @Getter@Setter
    private Integer code;
    @Getter@Setter
    private String desc;

    VendorStatus(Integer code, String desc) {
        this.code = code;
        this.desc = desc;
    }

    public static VendorStatus findByCode(Integer code) {
        Optional<VendorStatus> first = Arrays.stream(VendorStatus.values()).filter(item -> item.getCode().equals(code)).findFirst();
        return first.orElse(null);
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冰冰很社恐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值