首先声明:本文拒绝贩卖焦虑感,看到此文的您,请务必克制焦虑情绪的产生!
但是,还是要如实说明一下,以防万一。如果逻辑删除配置错误的话,可能导致的严重后果就是数据被物理删除。如果灾备方案不完善的话,极有可能导致数据丢失,因此,需要格外小心!
一般情况下,控制逻辑删除的字段命名为isDeleted(是否删除)或isShow(是否显示),或者类似的名称。但对于同一个值来说,isDeleted和isShow一般表示相反的意思。如:
isDeleted=1,一般表示逻辑删除,即不显示;
而isShow=1,一般表示未逻辑删除,即显示。
对于SpringCloud整合MyBatis-Plus的情况而言,逻辑删除的默认配置和上面的isDeleted类型的表示方法一致。这种情况下,按照默认的配置使用就行了。默认情况下的使用方法,请参考:MyBatis-Plus官方文档。
如果是isShow之类的相反的情况,就需要额外更改几个地方。具体可参考如下两种方案:
方案一:
步骤1:修改application.yml中的mybatis-plus部分配置:
mybatis-plus:
mapper-locations: classpath:/mapper/**/*.xml
global-config:
db-config:
id-type: auto
logic-delete-field: isShow # (本方案需要的修改)全局逻辑删除的实体字段名(since 3.3.0,配置后可以忽略不配置步骤2)
logic-delete-value: 0 # (本方案需要的修改)逻辑已删除值(默认为1,此处应设置为0)
logic-not-delete-value: 1 # (本方案需要的修改)逻辑未删除值(默认为0,此处应设置为1)
步骤2(此步骤不需要执行,仅作对比之用!):在实体类xxxEntity.java中,为isShow属性添加@TableLogic注解:
/**
* 是否显示[0-不显示,1显示]
*/
//@TableLogic(value = "1", delval = "0")(此处已注释,添加了步骤1的logic-delete-field后,不再需要添加注解)
private Integer isShow;
-----------------------------------------------------方案之间的分割线------------------------------------------------
方案二:
步骤1:修改application.yml中的mybatis-plus部分配置:
mybatis-plus:
mapper-locations: classpath:/mapper/**/*.xml
global-config:
db-config:
id-type: auto
# logic-delete-field: isShow #(此行不需要配置,已注释)
logic-delete-value: 1 # (本方案需要的修改)逻辑已删除值(默认为 1)
logic-not-delete-value: 0 # (本方案需要的修改)逻辑未删除值(默认为 0)
步骤2:在实体类xxxEntity.java中,为isShow属性添加@TableLogic注解:
/**
* 是否显示[0-不显示,1显示]
*/
@TableLogic(value = "1", delval = "0") //(本方案需要的修改)
private Integer isShow;
如果上面的配置0和1配置相反或者错误的话,可能实现不了预期效果。
如果将控制逻辑删除属性名称配置错误的话,如将isShow错拼成了isShown,就有可能使逻辑删除变为物理删除,最终导致数据误删。建议需要这种配置的时候,一定要慎之又慎!