tkmybatis逻辑删除踩坑原理详解

逻辑删除示例(前景提要)

在实体类中加入@LogicDelete字段,表示在数据库中对这张对应的表进行逻辑删除。
你好! 这是你第一次使用 **Markdown编辑器** 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。

Question

在引入 tkmybatis逻辑删除后,日常使用如下方法


    public int delete(T t);

    public int deleteByExample(Example example);

    public int deleteByCondition(Object condition);

    public int deleteByPrimaryKey(Object key);


会对该表中的数据进行逻辑删除,此时逻辑删除是生效的。但是今天当使用了这个方法:

public int deleteByIds(String ids);

发现逻辑删除失效了,导致我以为@LogicDelete这块出问题了,后来先试了试别的删除方法发现逻辑删除是正常的。估计是deleteByIds方法本身的实现出了问题。怎么办呢?那只能去源码里面一探究竟了。

Solution

在这里插入图片描述
跳入方法只有一个接口,方法上面的注解标注了provider类,跳入一探究竟。
在这里插入图片描述
在这里插入图片描述
可以看出来,这个方法实现体根本就没有判断实体类是不是含有@LogicDelete注解,直接在拼SQL时,拼入Delete 关键字,这要能逻辑删除就见鬼了。
接下来上一下实现了逻辑删除的代码片
在这里插入图片描述
在这里插入图片描述

解决方法

1.用deleteByExample\deleteByCondition代替deleteByIds方法
2.或者自己写一段代码,来覆盖掉这个接口。

总结

嗯,有一些不太理解为什么要这么做,既然做了逻辑删除应该所有的删除方法都应该实现,结果这个却漏了,不知道是开发人员漏了还是故意的。希望以后的开发中不会像这样,给别人挖坑。

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值