欢迎来到代码驿站!

JAVA代码

当前位置:首页 > 软件编程 > JAVA代码

Mybatis plus逻辑删除失败的BUG操作

时间:2021-03-31 09:14:07|栏目:JAVA代码|点击:

开发调试的时候发现Mybatis Plus的逻辑删除失效了,看了下配置文件发现没有问题,通过查看以下源码发现

逻辑删除需要注入的bean,查看这个bean的源码如下

查看其中一个实例的类的源码,如通过ID逻辑删除LogicDeleteById的源码,如下

mp在项目启动时预加载SQL是通过TableInfo中logicDelete字段判断是否开启逻辑删除的。然后让我们来看看mp内部是如何判断是否开启逻辑删除的。

先看如下源码

大概就是讲实体类中的字段进行循环映射数据库字段并封装到TableFieldInfo类中,实体类信息封装到TableInfo中,在让我们来看看MP循环处理字段时候做了什么操作。

上图中的这一行代码,

让我们看看这行代码具体做了什么

现在已经很明确了,mp通过判断字段上是否有TableLogic注解来判断该实体类映射的表是否开启逻辑删除。但这一步是放到实体类所有的字段列表的循环中的,当逻辑删除字段在所有的字段中间而不是末尾的时候,判断逻辑删除的表示logicDelete会被覆盖为false,然后导致解析方法生成声明的时候判断为没有开启逻辑删除。

mp已经更新了这个错误,在设置logicDelete时会先判断原来的删除标识是否为true,否则保持原来的初始值false。

补充知识:分布式 mybatis-plus 逻辑删除不生效 升级后org.mybatis.logging.LoggerFactory报错

解决方案:

第一步:升级mybatisplus版本到3.2.0

第二步:多添加一个扩展包

<dependency>
        <groupId>com.baomidou</groupId>
        <artifactId>mybatis-plus-extension</artifactId>
        <version>3.2.0</version>
      </dependency>

上一篇:通过java生成读取二维码详解

栏    目:JAVA代码

下一篇:java实现服务器文件打包zip并下载的示例(边打包边下载)

本文标题:Mybatis plus逻辑删除失败的BUG操作

本文地址:http://www.codeinn.net/misctech/91781.html

推荐教程

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:914707363 | 邮箱:codeinn#126.com(#换成@)

Copyright © 2020 代码驿站 版权所有