SQL 执行分析拦截器【 目前只支持 MYSQL-5.6.3 以上版本 】,作用是分析 处理 DELETE UPDATE 语句, 防止小白或者恶意 delete update 全表操作!

这里我引用MyBatis-Plus官方文档所说的。

为什么需要执行分析插件?

实际开发中,虽然我们可以根据数据库权限分给对应的开发人员,让他们开发或者是同步备份一个生产数据库移植到本地。

但是就小公司而言,没几个会这么弄的,特别是五到六人的小开发团队。基本上,可以说,数据库权限分配或者是本地测试服务器都没有。因为如果那样搞的话,从长远的角度出发,是有利的,

第一、约束开发人员行为,防止因不小心或者是恶意删库删表清空数据;

第二、在内网环境下,有测试服务器好处,在于,速度快,不会因为连接远程导致的网络延迟,同时即便删除了部分数据或者是改动较大也不会影响生产环境下的数据和对应的web应用。

但是呢,可惜大多数小公司很少会这么做,据我了解,我的一个朋友公司规模相对比较大,属于中型公司,他们公司开发团队相对我现在的公司要大的多,但是最近他跟我吐槽说,他们的开发,有的时候为了一些无关紧要的功能进入数据库任意修改字段,要知道,这乃开发大忌,改字段,特别是实体和表字段关联紧密的,一般情况下,改字段多少都会影响实体从而影响业务逻辑,然后Bug就出现了。

所以呢?对于数据库和表方面加强约束是非常有必要的。推荐一个比较好的工具:phpmyadmin。这个工具就可以做到。

但是还有就是针对开发人员不小心测试导致的数据清空或者是数据异常改动,使用MyBatis-Plus作为持久层的小伙伴们可以采取如下策略(声明下,针对MyBatis-Plus2以上版本,3以下版本):

Spring+SpringMVC+MyBatis-Plus(SSM框架开发的),可以如下配置:

在mybatis-config.xml配置如下内容即可:

<plugins>
<!-- SQL 执行分析拦截器 stopProceed 发现全表执行 delete update 是否停止运行 -->
<plugin interceptor="com.baomidou.mybatisplus.plugins.SqlExplainInterceptor">
<property name="stopProceed" value="false" />
</plugin>
</plugins>

注意事项:

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

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

MP实战系列(十五)之执行分析插件的更多相关文章

  1. MP实战系列(十六)之性能分析插件

    性能分析拦截器,用于输出每条 SQL 语句及其执行时间. 虽然使用阿里的Druid连接池可以完成这个目的,但是,我们一般认为,目前的组件能够达到这个目的,尽量使用目前的组件,因为修改配置和引入第三方库 ...

  2. MP实战系列(十四)之分页使用

    MyBatis Plus的分页,有插件式的,也有其自带了,插件需要配置,说麻烦也不是特别麻烦,不过觉得现有的MyBatis Plus足以解决,就懒得配置插件了. MyBatis Plus的资料不算是太 ...

  3. MP实战系列(十二)之封装方法详解(续二)

    继续MP实战系列(十一)之封装方法详解(续一)这篇文章之后. 此次要讲的是关于查询. 查询是用的比较多的,查询很重要,好的查询,加上索引如鱼得水,不好的查询加再多索引也是无济于事. 1.selectB ...

  4. MP实战系列(十)之SpringMVC集成SpringFox+Swagger2

    该示例基于之前的实战系列,如果公司框架是使用JDK7以上及其Spring+MyBatis+SpringMVC/Spring+MyBatis Plus+SpringMVC可直接参考该实例. 不过建议最好 ...

  5. shiro实战系列(十五)之Spring集成Shiro

    Shiro 的 JavaBean 兼容性使得它非常适合通过 Spring XML 或其他基于 Spring 的配置机制.Shiro 应用程序需要一个具 有单例 SecurityManager 实例的应 ...

  6. MP实战系列(十九)之批量新增

    批量操作在实际开发中也应用非常多,例如批量下发优惠券.批量添加用户等. 以MyBatis为例,通常实现批量操作,有这么几种方式? 第一,单条插入sql语句,进行for循环遍历,基准条件是根据前端传过的 ...

  7. MP实战系列(十八)之XML文件热加载

    你还在为每次修改XML文件中的SQL重新启动服务器或者是等待几分钟而烦恼吗? 配置了热加载即可解决你的这个问题. 这就是XML文件热加载的目的,减少等待时间成本,提高开发效率. SSM框架配置(Spr ...

  8. MP实战系列(九)之集成Shiro

    下面示例是在之前的基础上进行的,大家如果有什么不明白的可以参考MP实战系列的前八章 当然,同时也可以参考MyBatis Plus官方教程 建议如果参考如下教程,使用的技术为spring+mybatis ...

  9. MP实战系列(七)之集成springboot

    springboot是现在比较流行的微服使用的框架,springboot本质上就是将spring+springmvc+mybatis零配置化,基本上springboot的默认配置符合我们的开发.当然有 ...

随机推荐

  1. uni-app初体验及打包成apk

    首先用HBuilderX新建建一个uni-app项目 新建一个目录ucenter,该目录下新建两个vue文件ucenter.vue和setting.vue ucenter.vue <templa ...

  2. 安装mysql出现no compatible servers were found

    一.问题描述 今天在安装数据库的过程中,遇到错误提示: No compatible servers were found,You'll need to cancel this wizard and i ...

  3. Django Rest framework 之 视图

    RESTful 规范 django rest framework 之 认证(一) django rest framework 之 权限(二) django rest framework 之 节流(三) ...

  4. HTTPS的安全性

    一.Https介绍 1. 什么是Https HTTPS(全称:Hypertext Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道, ...

  5. 【代码笔记】iOS-NSFileManager

    一,代码. #import "ViewController.h" @interface ViewController () @end @implementation ViewCon ...

  6. VMware Linux虚拟机与WIN7操作系统共享无线网络上网配置

    Linux虚拟机与WIN7操作系统共享无线网络上网配置 by:授客 QQ:1033553122 测试环境: CentOS-7-x86_64-DVD-1503-01.iso Vmware 9 实践操作: ...

  7. 准备开发一个运行在Android上的JavaME模拟器

    在一个虚拟机A上运行另外一个虚拟机B看起来是挺不靠谱的一件事,在手机上运行某个虚拟机也不怎么靠谱.并且如果虚拟机A运行在手机上这个听起来就更不靠谱了.但是很多人就在做这样的事.比如在在手机上运行DOS ...

  8. Android--用Valley框架去上传图片

    1.除了用到了Volley,还用到了一个包httpmime(下载地址:http://download.csdn.net/detail/chequer_lkp/8102751) 2.需要一个工具类,该类 ...

  9. [Android] Linux下JNI简单实现过程

    大概梳理了一下JNI的过程: start->先写好A.java文件,里面添加native方法B,调用库C.so->编译成.class文件->用javac生成.h文件,文件包含Java ...

  10. [Ubuntu] 解决 ubuntu 升级时 /boot 空间不足

    经常升级Linux内核,导致更新时警告/boot分区空间不足.这是以为多次升级内核后,导致内核版本太多,清理一下没用的内核文件就行了. 原文地址请保留http://www.cnblogs.com/ro ...