系列文章

mybatis-plus使用和原理剖析之条件构造器

文章目录

  • 一、官方说明
  • 二、使用方法
  • 三、原理剖析
    • 1.SQL注入器原理
    • 2.SelectById
    • 3.DeleteById
    • 4.总结
  • 四、风险评估

一、官方说明

逻辑删除

说明:

只对自动注入的 sql 起效:

  • 插入: 不作限制
  • 查找: 追加 where 条件过滤掉已删除数据,且使用 wrapper.entity 生成的 where 条件会忽略该字段
  • 更新: 追加 where 条件防止更新到已删除数据,且使用 wrapper.entity 生成的 where 条件会忽略该字段
  • 删除: 转变为 更新

例如:

  • 删除: update user set deleted=1 where id = 1 and deleted=0
  • 查找: select id,name,deleted from user where deleted=0

字段类型支持说明:

  • 支持所有数据类型(推荐使用 Integer,Boolean,LocalDateTime)
  • 如果数据库字段使用datetime,逻辑未删除值和已删除值支持配置为字符串null,另一个值支持配置为函数来获取值如now()

附录:

  • 逻辑删除是为了方便数据恢复和保护数据本身价值等等的一种方案,但实际就是删除。
  • 如果你需要频繁查出来看就不应使用逻辑删除,而是以一个状态去表示。

二、使用方法

  • 全局配置
mybatis-plus:global-config:db-config:logic-delete-field: flag # 全局逻辑删除的实体字段名(since 3.3.0,配置后可以忽略不配置步骤2)logic-delete-value: 1 # 逻辑已删除值(默认为 1)logic-not-delete-value: 0 # 逻辑未删除值(默认为 0)
  • 局部配置
    /*** 逻辑删除 1-已删除, 0-未删除*/@TableField(value = "is_deleted")@TableLogic(value = "0", delval = "1")private String isDeleted;

三、原理剖析

官方说明中很重要的一点是逻辑删除"只对自动注入的 sql 起效",也就是说XML中自定义的SQL不会自动拼接逻辑删除条件也不会将物理删除更改为逻辑删除。

为什么不可以像分页插件、多租户插件以及乐观锁插件一样通过SQL拦截器实现哪?问题在于逻辑删除本质是update语句,物理删除是delete语句,没有见过SQL拦截器直接改变DML 语句类型的(我孤陋寡闻也说不定

mybatis-plus使用和原理剖析之逻辑删除相关推荐

  1. mybatis 乐观锁_MybatisPlus新特性之逻辑删除、乐观锁、自动填充

    MP特性 公共字段的自动填充功能 自动更新全局属性,比如创建的时间修改的时间,这样就不用每执行一次插入更新操作都带上一个set大大节省了很多效率,从而也避免为了因为时间格式的不统一问题. 为了输出日志 ...

  2. 统计学习方法|逻辑斯蒂原理剖析及实现

    欢迎直接到我的博客查看最近文章:www.pkudodo.com.更新会比较快,评论回复我也能比较快看见,排版也会更好一点. 原始blog链接: http://www.pkudodo.com/2018/ ...

  3. fastText的原理剖析

    fastText的原理剖析 1. fastText的模型架构 fastText的架构非常简单,有三层:输入层.隐含层.输出层(Hierarchical Softmax) 输入层:是对文档embeddi ...

  4. 彻底搞透视觉三维重建:原理剖析、代码讲解、及优化改进

    视觉三维重建 = 定位定姿 + 稠密重建 + surface reconstruction +纹理贴图.三维重建技术是计算机视觉的重要技术之一,基于视觉的三维重建技术通过深度数据获取.预处理.点云配准 ...

  5. Elasticsearch分布式一致性原理剖析(一)-节点篇

    2019独角兽企业重金招聘Python工程师标准>>> 摘要: ES目前是最流行的开源分布式搜索引擎系统,其使用Lucene作为单机存储引擎并提供强大的搜索查询能力.学习其搜索原理, ...

  6. 统计学习方法|支持向量机(SVM)原理剖析及实现

    欢迎直接到我的博客查看最近文章:www.pkudodo.com.更新会比较快,评论回复我也能比较快看见,排版也会更好一点. 原始blog链接: http://www.pkudodo.com/2018/ ...

  7. 统计学习方法|朴素贝叶斯原理剖析及实现

    欢迎直接到我的博客查看最近文章:www.pkudodo.com.更新会比较快,评论回复我也能比较快看见,排版也会更好一点. 原始blog链接: http://www.pkudodo.com/2018/ ...

  8. 统计学习方法|K近邻原理剖析及实现

    欢迎直接到我的博客查看最近文章:www.pkudodo.com.更新会比较快,评论回复我也能比较快看见,排版也会更好一点. 原始blog链接: http://www.pkudodo.com/2018/ ...

  9. 统计学习方法|感知机原理剖析及实现

    欢迎直接到我的博客查看最近文章:www.pkudodo.com.更新会比较快,评论回复我也能比较快看见,排版也会更好一点. 原始blog链接: http://www.pkudodo.com/2018/ ...

  10. 开源 serverless 产品原理剖析 - Kubeless

    背景 Serverless 架构的出现让开发者不用过多地考虑传统的服务器采购.硬件运维.网络拓扑.资源扩容等问题,可以将更多的精力放在业务的拓展和创新上. 随着 serverless 概念的深入人心, ...

最新文章

  1. centos6.5原生系统修改ceph-mon 的ELF来让其加载低版本glibc库函数
  2. 腾讯微博快速有效增加广播转播量的方法与技巧
  3. SAP产品增强技术回顾
  4. openssl ssl_write 写错误
  5. 设置TOMCAT SESSIONID 字符长度和生成算法
  6. String类基础的那些事!
  7. 【离散数学】代数系统 第六章 格与布尔代数(4) 布尔代数
  8. QT IDE下载及安装(最新版本)
  9. CAD格式刷怎么用?CAD格式刷使用技巧
  10. 腾讯 AI Lab招聘算法实习生
  11. 解决两台路由器串联上网问题
  12. 转载:如何使用RFT自动打开IE
  13. 【小白笔记】EAST:Learning Policies for Adaptive Tracking with Deep Feature Cascades
  14. 51单片机电机测速程序c语言,基于51单片机光电编码器测速.doc
  15. 【ppt入门教程】Win7系统怎样实现ppt双屏显示不同的内容
  16. Android中的Gradle之配置及构建优化
  17. eps格式流程图制作流程
  18. NER任务的精确评估指标P、R、F1
  19. 浅谈为什么倒序遍历List删除元素没有问题
  20. Oracle存储过程基本语法和存储过程的各种实例

热门文章

  1. 跨境电商竞品分析报告
  2. 教你如何在Mac上打开CAJ格式的文件
  3. 第01课:走进分布式中间件(课前必读)
  4. iSCSI部署网络存储
  5. 0x8000FFFF(0X8000FFFF,WPS)
  6. AndroidStudio安装之后虚拟机启动失败解决方法
  7. SAP Pa studay,Material master
  8. Stata数据处理:物价指数-(CPI)-的导入和转换
  9. Android Studio快速开发之道
  10. 台式计算机用什么电源线,电脑电源线有什么规格