通常因一些业务需求,有一些数据实现删除操作并不是直接使用delete删除,而是在表中设置一个字段比如“disabled”(是否删除:1 否,0 是),来标识这条数据是否删除,则项目中的查询根据条件进行筛选。
那么既然不能直接使用delete方法,就只能通过这条记录的id把它的状态改为0,再执行update方法,但是这样感觉会有点繁琐,既然Mybatis-plus已经带了delete方法,能不能直接使用,达到不是物理删除,而是逻辑删除,直接把"disabled"字段的值设为1呢?下面说一下如何实现:
引入Mybatis-plus的jar包
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.3.1</version>
</dependency>
在application.yml配置文件配置如下:
mybatis-plus:
# 开启mybatis-plus逻辑删除
global-config:
db-config:
logic-delete-value: 1 # 逻辑已删除值(默认为 1)
logic-not-delete-value: 0 # 逻辑未删除值(默认为 0)
# 分配ID(主键类型为Number(Long和Integer)或String)(since 3.3.0),
# 使用接口IdentifierGenerator的方法nextId
# (默认实现类为DefaultIdentifierGenerator雪花算法)
id-type: auto
mapperLocations: classpath:mapper/**/*.xml
在对应数据库生成的实体类,某个标识删除的字段加上注解
/**
* 是否显示[0-不显示,1显示]
*
* TableLogic 逻辑删除字段,全局配置默认是1表示已删除,0表示未删除,
* 我们的表设计是1表示正常,0表示删除,所以需要指定这两个值
*/
@TableLogic(value = "1", delval = "0")
private Integer disabled;
然后删除的时候直接使用delete的方法根据id主键进行删除