MP实战系列(十五)之执行分析插件

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 语句是否停止执行

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

原文地址:https://www.cnblogs.com/youcong/p/9794352.html