tkmybatis逻辑删除踩坑原理详解

tkmybatis 同时被 2 个专栏收录
1 篇文章 0 订阅
3 篇文章 0 订阅

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

在实体类中加入@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.或者自己写一段代码,来覆盖掉这个接口。

总结

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

  • 3
    点赞
  • 2
    评论
  • 1
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

<p> <span style="font-size:16px;">一、课程简介</span> </p> <p> <span style="font-size:14px;">这是</span><span><span style="color:#E56600;font-size:14px;">『</span><span style="color:#E56600;font-size:14px;">Java学习指南系列</span><span style="color:#E56600;font-size:14px;"></span><span style="color:#E56600;font-size:14px;">』</span></span><span style="font-size:14px;">的第18篇教程 ,是Java开发的高级课程,介绍反射机制、注解和框架设计的一般性原理。</span> </p> <br /> <p> <span style="font-size:16px;">二、主要内容 </span> </p> <p> <span style="font-size:14px;">本篇包含以下内容:</span> </p> <p> <span style="font-size:14px;">* 使用反射机制,读取Class中的字段信息</span> </p> <p> <span style="font-size:14px;">* 使用反射<span style="font-size:14px;">机制</span>,对Class中的方法进行调用</span> </p> <p> <span style="font-size:14px;">* 以JSON与POJO的转换为例,演示反射机制的运用</span> </p> <p> <span style="font-size:14px;">* 自定义注解的语法</span> </p> <p> <span style="font-size:14px;">* 使用反射机制,读取类中的注解信息</span> </p> <p> <span style="font-size:14px;">* 以反射和注解为基础,演示数据库SQL的自动生成</span> </p> <p> <span style="font-size:14px;">* 注解的默认值,默认注解,元注解和内置注解</span> </p> <span style="font-size:14px;">* 以全局实例管理为例,演示一般性的框架设计方法</span><br /> <br /> <p> <span style="font-size:16px;">三、课程体系</span> </p> <p> <span style="font-size:14px;color:#E56600;">〖Java学习指南〗</span><span style="font-size:14px;">系列</span><span style="font-size:14px;">:包含入门与进阶语法,Swing桌面开发,安卓开发,JavaFX开发,网络通信Socket,数据结构与算法等课程。</span> </p> <p> <span style="font-size:14px;color:#E56600;">〖网站开发〗</span><span style="font-size:14px;color:#E56600;">系列</span><span style="font-size:14px;"><span style="color:#E56600;">:</span>包含网页基础、网站入门、数据库、网站中级、FreeMarker、网站高级、项目应用、MyBatis、Redis等课程。</span> </p>
<p> 本课程适合有JAVA和数据库基础的人员。 </p> <p> 本课程使用Eclipse和<span style="font-size:13.3333px;">IntelliJ IDEA两种开发工具,详细的讲解了MyBatis的各种语法,并且讲解了MyBatis逆向工程和MyBatis两种常用的插件:MyBatis Plus和通用Mapper。</span> </p> <p> <span style="font-size:13.3333px;">本课程从理论和实际案例两方面充分讲解了MyBatis的各种技术细节,和应用场景,并且以绘图的方式讲解了各种MyBatis中较难的技术点。</span> </p> <p> <span style="font-size:13.3333px;">相信可以通过本课程的学习,读者能够掌握MyBatis学习过程中的各种技巧和实际案例。</span> </p> <p> <span style="font-size:13.3333px;">本课程中设计的大致技术点,如下所示。</span> </p> <p>       1.Eclipse、IntelliJ IDEA环境下开发MyBatis </p> <span></span>      2.MyBatis多种方式的CRUD<br />       3.MyBatis配置文件详解<br />       4.MyBatis映射文件详解<br />       5.使用MyBatis调用存储过程<br />       6.动态SQL<br />       7.关联查询<br />       8.延迟加载<br />       9.整合一级、二级缓存<br />       10.逆向工程<br />       11.事务操作<br />       12.MyBatis处理多个参数的问题<br />       13.鉴别器和别名<br />       14.各种方式的模糊查询<br />       15.MyBatis核心源码分析<br />       16.MyBatis拦截器<br />       17.MyBatis批量更新操作<br />       18.PageHelper<br />       19.MyBatis Plus详解<br />       20.通用Mapper详解<br /><p>    希望大家可以通过本课程的学习,深入的掌握MyBatis及其各种插件的用法,从而提高对数据的操作效率 </p> <p> <br /></p>
相关推荐
<p style="font-size:14px;color:#333333;"> <strong><span style="color:#000000;">1、 课程简介</span></strong> </p> <p style="font-size:14px;color:#333333;"> <span>T</span><span>omcat </span><span>服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用</span><a href="https://baike.baidu.com/item/%E6%9C%8D%E5%8A%A1%E5%99%A8?hm"><span>服务器</span></a><span>,在中小型系统下被普遍使用,是目前javaEE开发使用的最主流的服务器之一 。</span> </p> <p style="font-size:14px;color:#333333;"> <span>本课程作为Tomcat高级课程, 从Tomcat基础、架构、Jasper、服务器配置、web应用配置、Tomcat管理配置、JVM、Tomcat集群、Tomcat安全、性能调优等各个方面进行了详细的讲解,并通过一个案例,讲解了Tomcat对Websocket的支持, 学习完该课程之后, 相信你对tomcat的整体架构, 内部原理, 系统调优有一个深刻的认识。</span> </p> <p style="font-size:14px;color:#333333;"> <span>本课程旨在通过Tomcat高级部分内容,使学员更加深入的理解Tomcat底层原理, 对tomcat的设计架构有一个深刻的认识 , 从而帮助我们对Tomcat进行更加深入到使用和优化,对系统的整体性能进行提升。</span> </p> <p style="font-size:14px;color:#333333;"> <strong><span style="color:#000000;"><span> </span><span>     2、适应人群</span></span></strong> </p> <p style="font-size:14px;color:#333333;"> <span style="color:#FF0000;">       </span><span>具有一定Tomcat基础,对于javaWeb 基础有一定了解的学员。</span> </p> <p style="font-size:14px;color:#333333;"> <strong><span style="color:#000000;">      3、课程亮点</span></strong> </p> <p style="font-size:14px;color:#333333;"> <span>       </span><span>本课程具备完整的Tomcat的体系结构, 从Tomcat的基础到架构、 服务配置、优化等方面都进行了详细的讲解。</span> </p>
©️2020 CSDN 皮肤主题: 技术工厂 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值