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

Wesley13
• 阅读 438

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

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

点赞
收藏
评论区
推荐文章
秃头王路飞 秃头王路飞
2个月前
webpack5手撸vue2脚手架
webpack5手撸vue相信工作个12年的小伙伴们在面试的时候多多少少怕被问到关于webpack方面的知识,本菜鸟最近闲来无事,就尝试了手撸了下vue2的脚手架,第一次发帖实在是没有经验,望海涵。 language JavaScript "name": "vuecliversion2", "version": "1.0.0", "desc
blmius blmius
1年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录 问题 用navicat导入数据时,报错: 原因这是因为当前的MySQL不支持datetime为0的情况。 解决修改sql\mode: sql\mode:SQL Mode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。 全局s
Karen110 Karen110
1年前
一篇文章带你了解JavaScript日期
日期对象允许您使用日期(年、月、日、小时、分钟、秒和毫秒)。一、JavaScript的日期格式一个JavaScript日期可以写为一个字符串:Thu Feb 02 2019 09:59:51 GMT+0800 (中国标准时间)或者是一个数字:1486000791164写数字的日期,指定的毫秒数自1970年1月1日00:00:00到现在。 1\. 显示日期使用
Wesley13 Wesley13
1年前
Java爬虫之JSoup使用教程
title: Java爬虫之JSoup使用教程 date: 2018-12-24 8:00:00 +0800 update: 2018-12-24 8:00:00 +0800 author: me cover: [https://img-blog.csdnimg.cn/20181224144920712](https://www.oschin
Wesley13 Wesley13
1年前
030 SSM综合练习06
**1.权限操作涉及的三张表** (1)用户表信息描述users ![](https://oscimg.oschina.net/oscnet/a4a2b1f943cbc2db1c8ddd613e7ed00a9ae.png) sql语句: CREATE TABLE users ( id VARCHAR2 ( 32 ) DEFAU
Stella981 Stella981
1年前
KVM调整cpu和内存
一.修改kvm虚拟机的配置 1、virsh edit centos7 找到“memory”和“vcpu”标签,将 <name>centos7</name> <uuid>2220a6d1-a36a-4fbb-8523-e078b3dfe795</uuid>
Easter79 Easter79
1年前
Twitter的分布式自增ID算法snowflake (Java版)
概述 == 分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。 有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。 而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
Stella981 Stella981
1年前
Merge Into 语法
merge into 根据查询数据对已存在的表中数据执行删除、修改、新增操作,在实际应用中非常实用,可以减少insert、update、delete的书写。 基本语法: merge into table_name tn using (select column_name,... from table_name ) tmp on tn.条件=tm
helloworld_34035044 helloworld_34035044
4个月前
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。 uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid() 或 uuid(sep)参数说明:sep 布尔值,生成的uuid中是否包含分隔符'',缺省为
为什么mysql不推荐使用雪花ID作为主键
作者:毛辰飞 # 背景 在mysql中设计表的时候,mysql官方推荐不要使用uuid或者不连续不重复的雪花id(long形且唯一),而是推荐连续自增的主键id,官方的推荐是auto_increment,那么为什么不建议采用uuid,使用uuid究