当前位置: 首页 > news >正文

MyBatis Plus (七) --------- 插件扩展

目录

  • 一、Mybatis 插件机制简介
  • 二、分页插件
  • 三、执行分析插件
  • 四、性能分析插件
  • 五、乐观锁插件


一、Mybatis 插件机制简介

插件机制:

MyBatis 通过插件(Interceptor) 可以做到拦截四大对象相关方法的执行,根据需求,完成相关数据的动态改变。

Executor
StatementHandler
ParameterHandler
ResultSetHandler

插件原理:

四大对象的每个对象在创建时,都会执行 interceptorChain.pluginAll(),会经过每个插件对象的 plugin()方法,目的是为当前的四大对象创建代理。代理对象就可以拦截到四
大对象相关方法的执行,因为要执行四大对象的方法需要经过代理。

二、分页插件

com.baomidou.mybatisplus.plugins.PaginationInterceptor

三、执行分析插件

com.baomidou.mybatisplus.plugins.SqlExplainInterceptor

SQL 执行分析拦截器,只支持 MySQL5.6.3 以上版本
该插件的作用是分析 DELETE UPDATE 语句,防止小白或者恶意进行 DELETE UPDATE 全表操作

只建议在开发环境中使用,不建议在生产环境使用

在插件的底层 通过 SQL 语句分析命令 :Explain 分析当前的 SQL 语句,根据结果集中的 Extra 列来断定当前是否全表操作。

四、性能分析插件

com.baomidou.mybatisplus.plugins.PerformanceInterceptor

性能分析拦截器,用于输出每条 SQL 语句及其执行时间。
SQL 性能执行分析,开发环境使用,超过指定时间,停止运行,有助于发现问题。

五、乐观锁插件

com.baomidou.mybatisplus.plugins.OptimisticLockerInterceptor

如果想实现如下需求: 当要更新一条记录的时候,希望这条记录没有被别人更新

乐观锁的实现原理:

取出记录时,获取当前 version 2
更新时,带上这个 version 2
执行更新时, set version = yourVersion+1 where version = yourVersion
如果 version 不对,就更新失败

@Version 用于注解实体字段,必须要有。

相关文章:

  • css基础总结(css简介、css语法框架、css样式表格式、css选择器)
  • 东芝推出第三代碳化硅MOSFET来提高工业设备效率
  • Zookeeper集群搭建
  • 基于SSM的校园运动会管理系统
  • javaweb基于html5旅游攻略管理系统ssh
  • 司空见惯 - 好吃的姑娘
  • 深度学习之卷积类型
  • 软件测试—七年老鸟的成长感悟
  • 利用1433端口及提权总结
  • 深度学习(PyTorch)——加载数据初认识与实战操作
  • MIKE水动力笔记15_数字化海图4之制作xyz水深数据
  • flex布局(理论+案例解释)
  • 如何选择合适的渠道与客户建立联系
  • 08c++呵呵老师【给子弹添加爆炸效果】
  • 【C++】泛型编程
  • Angular Elements 及其运作原理
  • CoolViewPager:即刻刷新,自定义边缘效果颜色,双向自动循环,内置垂直切换效果,想要的都在这里...
  • Flannel解读
  • Github访问慢解决办法
  • IDEA常用插件整理
  • java概述
  • PHP 7 修改了什么呢 -- 2
  • unity如何实现一个固定宽度的orthagraphic相机
  • 动手做个聊天室,前端工程师百无聊赖的人生
  • 高度不固定时垂直居中
  • 前嗅ForeSpider中数据浏览界面介绍
  • 温故知新之javascript面向对象
  • 我是如何设计 Upload 上传组件的
  • 新书推荐|Windows黑客编程技术详解
  • 验证码识别技术——15分钟带你突破各种复杂不定长验证码
  • 自动记录MySQL慢查询快照脚本
  • k8s使用glusterfs实现动态持久化存储
  • NLPIR智能语义技术让大数据挖掘更简单
  • ​LeetCode解法汇总2304. 网格中的最小路径代价
  • ​业务双活的数据切换思路设计(下)
  • #我与Java虚拟机的故事#连载07:我放弃了对JVM的进一步学习
  • (3)llvm ir转换过程
  • (30)数组元素和与数字和的绝对差
  • (ros//EnvironmentVariables)ros环境变量
  • (六)激光线扫描-三维重建
  • (学习日记)2024.02.29:UCOSIII第二节
  • (转)Oracle存储过程编写经验和优化措施
  • (转载)Linux网络编程入门
  • (轉貼) 資訊相關科系畢業的學生,未來會是什麼樣子?(Misc)
  • .form文件_SSM框架文件上传篇
  • .mkp勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .net 前台table如何加一列下拉框_如何用Word编辑参考文献
  • .net 设置默认首页
  • .NET6实现破解Modbus poll点表配置文件
  • .NET是什么
  • .net中调用windows performance记录性能信息
  • ;号自动换行
  • ?php echo $logosrc[0];?,如何在一行中显示logo和标题?
  • [BZOJ1877][SDOI2009]晨跑[最大流+费用流]
  • [CentOs7]iptables防火墙安装与设置