首页 > 数据库 >MyBatisPlus插件扩展_SqlExplainInterceptor执行分析插件的使用

MyBatisPlus插件扩展_SqlExplainInterceptor执行分析插件的使用

时间:2023-03-24 18:01:13浏览次数:41  
标签:语句 分析 插件 MyBatisPlus 全表 SqlExplainInterceptor SQL delete



简介

SQL 执行分析拦截器【 目前只支持 MYSQL-5.6.3 以上版本 】,

作用是分析 处理 DELETE UPDATE 语句, 防止小白或者恶意 delete update 全表操作!

com.baomidou.mybatisplus.plugins.SqlExplainInterceptor

参数:stopProceed 发现执行全表 delete update 语句是否停止执行

注意!该插件只用于开发环境,不建议生产环境使用。。。

原理

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

实现

来到项目下的applicationContext.xml中配置sqlSessionFactoryBean的地方。

<!--  配置SqlSessionFactoryBean
  Mybatis提供的: org.mybatis.spring.SqlSessionFactoryBean
  MP提供的:com.baomidou.mybatisplus.spring.MybatisSqlSessionFactoryBean
  -->
 <bean id="sqlSessionFactoryBean" class="com.baomidou.mybatisplus.spring.MybatisSqlSessionFactoryBean">
  <!-- 数据源 -->
  <property name="dataSource" ref="dataSource"></property>
  <property name="configLocation" value="classpath:mybatis-config.xml"></property>
  <!-- 别名处理 -->
  <property name="typeAliasesPackage" value="com.badao.beans"></property> 
  <!-- 注入全局MP策略配置 -->
  <property name="globalConfig" ref="globalConfiguration"></property> 
  <!-- 插件注册 -->
  <property name="plugins">
   <list>
    <!-- 注册分页插件 -->
    <bean class="com.baomidou.mybatisplus.plugins.PaginationInterceptor"></bean>
    <!-- 注册执行分析插件 -->
    <bean class="com.baomidou.mybatisplus.plugins.SqlExplainInterceptor">
     <property name="stopProceed" value="true" />
    </bean>
   </list>
  </property> 
 </bean>

编写测试方法

/***
  * 执行分析插件
  */
 @Test
 public void testExplainPlugin() {
  //不传任何条件 所以是删除全表操作
  employeeMapper.delete(null);
  
 }

运行结果

MyBatisPlus插件扩展_SqlExplainInterceptor执行分析插件的使用_spring

可以看到提示失败原因是全表操作被拒绝。


标签:语句,分析,插件,MyBatisPlus,全表,SqlExplainInterceptor,SQL,delete
From: https://blog.51cto.com/BADAOLIUMANGQZ/6147634

相关文章