mybatis-plus阻止全表更新与删除的实现
更新时间:2023年12月28日 10:23:32 作者:javachen__
BlockAttackInnerInterceptor 是mybatis-plus的一个内置拦截器,用于防止恶意的全表更新或删除操作,本文主要介绍了mybatis-plus阻止全表更新与删除的实现,感兴趣的可以了解一下
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 { @Bean public PaginationInterceptor paginationInterceptor() { PaginationInterceptor paginationInterceptor = new PaginationInterceptor(); // 设置最大单页限制数量,默认 500 条,-1 不受限制 paginationInterceptor.setLimit(500); // 开启 count 的 join 优化,只针对部分 left join paginationInterceptor.setCountSqlParser(new JsqlParserCountOptimize(true)); List<ISqlParser> sqlParserList = new ArrayList<>(); // 攻击 SQL 阻断解析器、加入解析链 sqlParserList.add(new BlockAttackSqlParser() { @Override public 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 deletion at 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
到此这篇关于mybatis-plus阻止全表更新与删除的实现的文章就介绍到这了,更多相关mybatis-plus阻止全表更新与删除内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
Canal搭建 idea设置及采集数据到kafka的操作方法
这篇文章主要介绍了Canal搭建idea设置及采集数据到kafka的相关知识,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2023-05-05SpringBoot常见get/post请求参数处理、参数注解校验及参数自定义注解校验详解
这篇文章主要给大家介绍了关于SpringBoot常见get/post请求参数处理、参数注解校验及参数自定义注解校验的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下2022-03-03
最新评论