MybatisPlus逻辑删除
一、配置
1.1、在application.yml配置文件中:
# mybatis-plus配置控制台打印sql语句:
mybatis-plus:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
global-config:
db-config:
logic-delete-field: logicFlag
logic-delete-value: 1 #默认是1
logic-not-delete-value: -1 #默认是0
id-type: auto
然后在实体类的属性上面加上@TableLogic注解就行
@Data
@TableName("tbl_user")
public class User {
private Integer id;
//插入和更新操作都会进行字段填充
@TableField(fill = FieldFill.INSERT_UPDATE)
private String name;
@TableLogic //逻辑删除字段
private Integer logicFlag;
}
1.2、直接在实体类中指定逻辑删除的值
@Data
@TableName("tbl_user")
public class User {
private Integer id;
//插入和更新操作都会进行字段填充
@TableField(fill = FieldFill.INSERT_UPDATE)
private String name;
@TableLogic(value = "1",delval = "-1") //逻辑删除字段
private Integer logicFlag;
}
二、测试
数据库初始数据
2.1 逻辑删除
现在逻辑删除id为2的这条数据
@Test
public void testLogicDelete(){
Integer i = userMapper.deleteById(2);
System.out.println("i="+i);
}
可以看到,控制台输出的sql语句是更新,而不是删除。会将logic_flag字段设置成-1(-1是我们在application.yml或者@TableLogic注解中指定的值)
2.2 查询逻辑删除的数据
这时查询id为2的这条数据(被逻辑删除的数据)
@Test
public void testLogicDelete(){
User user = userMapper.selectById(2);
System.out.println(user);
}
可以看到,控制台输出的sql语句自动带上了logic_flag=1的条件,所以查询出来的结果为空,但是数据库中的数据是真实存在的。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
2020-06-24 栈的应用----算术表达式计算问题(中缀转后缀,后缀计算)