mybatis-plus逻辑删除的坑
·
一旦在逻辑字段上加了@TableLogic逻辑删除的配置,并且使用mybatis-plus自带的方法时(如果自己用xml写SQL不会出现下面的情况)
查询、修改时会自动排除逻辑删除的数据
当使用mybatis-plus自带的查询方法时,就不用每次查询的时候跟 .eq(“deleted”,false) 了
mybatis-plus 会自动加上过滤条件 is_deleted = 0,我亲自测了一下
User的逻辑删除字段:

接口详情:

数据库:
![]()
SQL打印日志:

LambdaQueryWrapper并没有加 is_deleted=0,但是查看日志后发现mybatis-plus自动为我们加上了 。查出来的也为空。
即便在LambdaQueryWrapper后面追加条件is_deleted=1 也查询不到逻辑删除的数据,因为mybatis-plus还是会加上is_deleted=0的条件
SQL打印日志:

如果要查询逻辑删除的数据,必须自己写SQL,不能用mybatis-plus自带的方法!
删除时会自动修改逻辑字段值而非删除记录行
数据库:
![]()
接口详情:

SQL打印日志:
另外如果用了逻辑删除,那么建唯一索引的时候就要小心了
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)