MyBatisPlus逻辑删除
在数据库表表字段中设置一个标志字段
例如:下表中delflag字段用于表示记录是否被删除,
0-未删除,1-已删除
复习一下怎样修改表字段,如下代码所示
-- auto-generated definition
create table user
(
id int auto_increment
primary key,
username varchar(100) not null,
password varchar(100) not null,
role tinyint(255) null,
ctime datetime null
);
#删除表字段 alter table 表名 drop 字段名;
alter table user drop delflag;
#添加表字段 alter table 表名 add 字段名 tinyint(1) not null default 0;
alter table user add delflag tinyint(1) not null default 0;
#修改表字段 alter table 表名 alter column 字段名 set default 0
alter table user alter column delflag set default 0
在实体类中使用@TableLogic注解逻辑删除字段
如下所示:
@Data
@AllArgsConstructor
@NoArgsConstructor
@TableName("user")//TableName一定要对应表名
public class User {
/**
* 主键
*/
@TableId(value = "id",type = IdType.AUTO)
private Long id;
String username;
String password;
int role;
Date ctime;
@TableLogic//注解:逻辑删除标识字段
int delflag = 0;
}
在配置文件中配置逻辑删除
在application.properties文件中添加如下配置
#配置逻辑删除
#0为未删除,1为删除
mybatis-plus.global-config.db-config.logic-delete-value=1
mybatis-plus.global-config.db-config.logic-not-delete-value=0
测试逻辑删除
执行删除操作前的user数据表:
在测试类中执行删除操作
/**
* 测试 逻辑删除
*/
@Test
public void testLogicDelete() {
int rows = userMapper.deleteById(8);
System.out.println(rows+"行受影响!");
}
执行删除操作后的user数据表:
id为8的记录中delflag字段值从0变为1,表示已删除