MyBatis-Plus MyBatis-Plus
首页
  • 快速入门
  • 核心功能
  • 扩展
  • 插件
  • 使用配置
  • 代码生成器配置新
  • 代码生成器配置旧
生态
问答
💖支持
  • 数据处理模块
  • 单体开发平台
  • 微服务开发平台
  • 插件式一体化开发平台
更新日志 (opens new window)
GitHub (opens new window)
首页
  • 快速入门
  • 核心功能
  • 扩展
  • 插件
  • 使用配置
  • 代码生成器配置新
  • 代码生成器配置旧
生态
问答
💖支持
  • 数据处理模块
  • 单体开发平台
  • 微服务开发平台
  • 插件式一体化开发平台
更新日志 (opens new window)
GitHub (opens new window)
  • 快速入门

    • 简介
    • 快速开始
    • 安装
    • 配置
    • 注解
    • 快速测试
  • 核心功能

    • 代码生成器(新)
    • 代码生成器(旧)
    • CRUD 接口
    • 条件构造器
    • 主键策略
    • 自定义ID生成器
  • 扩展

    • 逻辑删除
    • 通用枚举
    • 字段类型处理器
    • 自动填充功能
    • SQL注入器
    • 执行SQL分析打印
    • 数据安全保护
    • 多数据源
    • MybatisX快速开发插件
    • 企业高级特性
    • 脚本自动维护
  • 插件

    • 插件主体
    • 分页插件
    • 乐观锁插件
    • 多租户插件
    • 防全表更新与删除插件
      • BlockAttackInnerInterceptor
    • 动态表名插件
  • 指南
  • 插件
Team Baomidou
2022-10-31
目录

防全表更新与删除插件

title: 防全表更新与删除插件 date: 2021-12-14 19:13:02 permalink: /pages/f9a237/ article: false


# BlockAttackInnerInterceptor

针对 update 和 delete 语句 作用: 阻止恶意的全表更新删除

注入MybatisPlusInterceptor类,并配置BlockAttackInnerInterceptor拦截器

@Configuration
public class MybatisPlusConfig {
  @Bean
  public MybatisPlusInterceptor mybatisPlusInterceptor() {
    MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
    interceptor.addInnerInterceptor(new BlockAttackInnerInterceptor());
    return interceptor;
  }
}
1
2
3
4
5
6
7
8
9

测试示例(全表更新)

@SpringBootTest
public class QueryWrapperTest {

  @Autowired
  private UserService userService;

  /**
  + SQL:UPDATE user  SET name=?,email=?;
  */
  @Test
  public void test() {
    User user = new User();
    user.setId(999L);
    user.setName("custom_name");
    user.setEmail("xxx@mail.com");
    // com.baomidou.mybatisplus.core.exceptions.MybatisPlusException: Prohibition of table update operation
    userService.saveOrUpdate(user, null);
  }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

测试示例(部分更新)

@SpringBootTest
public class QueryWrapperTest {

  @Autowired
  private UserService userService;

  /**
  + SQL:UPDATE user  SET name=?, email=? WHERE id = ?;
  */
  @Test
  public void test() {
    LambdaUpdateWrapper<User> wrapper = new LambdaUpdateWrapper<>();
    wrapper.eq(User::getId, 1);
    User user = new User();
    user.setId(10L);
    user.setName("custom_name");
    user.setEmail("xxx@mail.com");
    userService.saveOrUpdate(user, wrapper);
  }}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
帮助我们改善此页面! (opens new window)
上次更新: 2022/11/03, 10:57:42
多租户插件
动态表名插件

← 多租户插件 动态表名插件→

Theme by Vdoing | Copyright © 2016-2023 Team Baomidou | Sponsored by JetBrains | 渝ICP备2021000141号-1

友情链接:AiZuDa | D.Yang | NanCheung | apidocsBlog

  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
×