mybatis-plus阻止全表更新与删除

news/2024/11/30 15:49:40/

BlockAttackInnerInterceptor 是mybatis-plus的一个内置拦截器,用于防止恶意的全表更新或删除操作。当你添加了这个拦截器后,它会检查即将执行的 sql语句,如果有尝试进行全表更新或删除的语句,该拦截器会阻止这些操作。

        <!-- mybatis-plus --><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.2.0</version></dependency>
package com.zy.fast.admin.config;import com.baomidou.mybatisplus.core.parser.ISqlParser;
import com.baomidou.mybatisplus.extension.parsers.BlockAttackSqlParser;
import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import com.baomidou.mybatisplus.extension.plugins.pagination.optimize.JsqlParserCountOptimize;
import net.sf.jsqlparser.statement.delete.Delete;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;import java.util.ArrayList;
import java.util.List;/*** @author javachen* @description MybatisPlus分页工具类*/
@Configuration
@MapperScan("com.zy.fast.admin.moudles.*.mapper")
public class MybatisPlusConfig {@Beanpublic PaginationInterceptor paginationInterceptor() {PaginationInterceptor paginationInterceptor = new PaginationInterceptor();// 设置最大单页限制数量,默认 500 条,-1 不受限制paginationInterceptor.setLimit(500);// 开启 count 的 join 优化,只针对部分 left joinpaginationInterceptor.setCountSqlParser(new JsqlParserCountOptimize(true));List<ISqlParser> sqlParserList = new ArrayList<>();// 攻击 SQL 阻断解析器、加入解析链sqlParserList.add(new BlockAttackSqlParser() {@Overridepublic void processDelete(Delete delete) {//如果你想自定义做点什么,可以重写父类方法像这样子if ("sys_user_account".equals(delete.getTable().getName())) {// 自定义跳过某个表,其他关联表可以调用 delete.getTables() 判断return ;}super.processDelete(delete);}});paginationInterceptor.setSqlParserList(sqlParserList);return paginationInterceptor;}}

测试不带where条件删除时

### Error updating database.  Cause: com.baomidou.mybatisplus.core.exceptions.MybatisPlusException: Prohibition of full table deletion
### The error may exist in file [D:\fast-admin\target\classes\mapper\system\SysUserAccountMapper.xml]
### The error may involve com.zy.fast.admin.moudles.system.mapper.SysUserAccountMapper.deleteByUserId
### The error occurred while executing an update
### Cause: com.baomidou.mybatisplus.core.exceptions.MybatisPlusException: Prohibition of full table deletionat org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:30)at org.apache.ibatis.session.defaults.DefaultSqlSession.update(DefaultSqlSession.java:199)at org.apache.ibatis.session.defaults.DefaultSqlSession.delete(DefaultSqlSession.java:212)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at java.lang.reflect.Method.invoke(Method.java:498)at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:426)... 116 common frames omitted


http://www.ppmy.cn/news/1278666.html

相关文章

Android Studio各种Gradle常见报错问题及解决方案

大家好&#xff0c;我是咕噜铁蛋&#xff01;在开发Android应用程序时&#xff0c;我们可能会遇到各种Gradle错误。这些错误可能来自不同的原因&#xff0c;例如依赖项问题、配置错误、版本冲突等。今天我通过搜索整理了一下&#xff0c;在这篇文章中&#xff0c;我将分享一些常…

Flink系列之:深入理解ttl和checkpoint,Flink SQL应用ttl案例

Flink系列之&#xff1a;深入理解ttl和checkpoint&#xff0c;Flink SQL应用ttl案例 一、深入理解Flink TTL二、Flink SQL设置TTL三、Flink设置TTL四、深入理解checkpoint五、Flink设置Checkpoint六、Flink SQL关联多张表七、Flink SQL使用TTL关联多表 一、深入理解Flink TTL …

uni-app学习记录

uni-app官网学习记录 uni-app注意点记录 页面跳转注意事项 navigateTo, redirectTo 只能打开非 tabBar 页面。switchTab 只能打开 tabBar 页面。reLaunch 可以打开任意页面。不能在首页 onReady 之前进行页面跳转。 页面通讯 // 发起页面uni.$emit(update,{msg:页面更新})//…

导入conda虚拟环境的lib

用 conda 虚拟环境跑代码&#xff0c;import scipy 时报错&#xff1a; ImportError: /lib64/libstdc.so.6: version GLIBCXX_3.4.29 not found (required by /data/itom/miniconda3/envs/cu116_pt1131/lib/python3.9/site-packages/scipy/spatial/_ckdtree.cpython-39-x86_64…

探索Node.js包管理器npm:介绍与使用指南

引言&#xff1a; 在现代软件开发中&#xff0c;包管理器已经成为了不可或缺的工具。它们简化了软件的安装、升级和管理过程&#xff0c;使得开发者能够更加高效地构建项目。而作为Node.js的官方包管理器&#xff0c;npm&#xff08;Node Package Manager&#xff09;无疑是最受…

MATLAB - 使用 YOLO 和基于 PCA 的目标检测,对 UR5e 的半结构化智能垃圾箱拣选进行 Gazebo 仿真

系列文章目录 前言 本示例展示了在 Gazebo 中使用 Universal Robots UR5e cobot 模拟智能垃圾桶拣选的详细工作流程。本示例提供的 MATLAB 项目包括初始化、数据生成、感知、运动规划和积分器模块&#xff08;项目文件夹&#xff09;&#xff0c;可创建完整的垃圾桶拣选工作流…

STM32F4 HAL流水灯Proteus仿真

源码下载&#xff1a;https://download.csdn.net/download/zlkk00/88654405

<软考高项备考>《论文专题 - 24 整合管理(2) 》

3 过程2-制订项目管理计划 3.1 问题 4W1H过程1-制定项目章程做什么定义、准备和协调项目计划的所有组成部分&#xff0c;并把它们整合为一份综合项目管理计划的过程&#xff1b;作用&#xff1a;生成一份综合文件&#xff0c;用于确定所有项目工作的基础及其执行方式为什么做…