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 用于注解实体字段,必须要有。