了解 MybatisPlus中@InterceptorIgnore防止拦截器拦截 基本知识(附Demo)

目录

  • 前言
  • 1. 基本知识
  • 2. Demo

前言

对于Java基本知识推荐阅读:

  1. java框架 零基础从入门到精通的学习路线 附开源项目面经等(超全)
  2. 【Java项目】实战CRUD的功能整理(持续更新)

一开始是因为报错多租户的问题,导致无法使用其他的库,又不想使用JDBC,后续发现可以使用该注解防止拦截器拦截!

1. 基本知识

@InterceptorIgnore 是 MyBatis-Plus 提供的一个注解,允许在 Mapper 类或方法上指定需要忽略的插件和拦截器,提供了灵活的方式来控制在特定操作中不应用某些拦截器,从而满足特定的业务需求

基本的源码如下:

@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE, ElementType.METHOD})
public @interface InterceptorIgnore {/*** 行级租户 {@link com.baomidou.mybatisplus.extension.plugins.inner.TenantLineInnerInterceptor}*/String tenantLine() default "";/*** 动态表名 {@link com.baomidou.mybatisplus.extension.plugins.inner.DynamicTableNameInnerInterceptor}*/String dynamicTableName() default "";/*** 攻击 SQL 阻断解析器,防止全表更新与删除 {@link com.baomidou.mybatisplus.extension.plugins.inner.BlockAttackInnerInterceptor}*/String blockAttack() default "";/*** 垃圾SQL拦截 {@link com.baomidou.mybatisplus.extension.plugins.inner.IllegalSQLInnerInterceptor}*/String illegalSql() default "";/*** 数据权限 {@link com.baomidou.mybatisplus.extension.plugins.inner.DataPermissionInterceptor}* <p>* 默认关闭,需要注解打开*/String dataPermission() default "1";/*** 其他的* <p>* 格式应该为:  "key"+"@"+可选项[false,true,1,0,on,off]* 例如: "xxx@1" 或 "xxx@true" 或 "xxx@on"* <p>* 如果配置了该属性的注解是注解在 Mapper 上的,则如果该 Mapper 的一部分 Method 需要取反则需要在 Method 上注解并配置此属性为反值* 例如: "xxx@1" 在 Mapper 上, 则 Method 上需要 "xxx@0"*/String[] others() default {};
}

具体的注解属性以及作用如下:

属性类型说明
tenantLineString行级租户插件,指定在该方法或类中忽略行级租户的拦截
dynamicTableNameString动态表名插件,指定在该方法或类中忽略动态表名的拦截
blockAttackString攻击 SQL 阻断解析器,防止全表更新与删除,指定在该方法或类中忽略该拦截
illegalSqlString垃圾 SQL 拦截,指定在该方法或类中忽略垃圾 SQL 的拦截
dataPermissionString数据权限拦截器,默认为关闭状态,需要注解打开
othersString[]其他拦截器的配置,格式为 “key@可选项”,可以配置多种其他拦截器的开关状态

2. Demo

基本的示例Demo如下:

import com.baomidou.mybatisplus.annotation.InterceptorIgnore;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
public class UserController {// 此方法会应用所有拦截器@PostMapping("/addUser")public String addUser(User user) {// 执行插入用户的逻辑return "用户添加成功!";}// 此方法将忽略行级租户@PostMapping("/addUserIgnoringPlugins")@InterceptorIgnore(tenantLine = "true")public String addUserIgnoringPlugins(User user) {// 执行插入用户的逻辑,行级租户 解析器不会生效return "用户添加成功(忽略插件)!";}
}

上述只是Demo示例

实战中的Demo示例也同理:

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/58438.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【解决】Pico 串流 Unity 开发环境 Preview 黑屏问题

开发平台&#xff1a;Unity 6.0 开发工具&#xff1a;Pico SDK   一、问题描述 在 Unity 开发环境下运行 测试 PicoVR 表现时&#xff0c;出现 Game视窗 PicoVR投屏 呈现黑屏效果。详细背景如下&#xff1a; UnitySwitch PlateformPICO Integration SDKPICO Live Preview6…

数据结构与算法——图

图 1.图的定义和表示 图的定义 图G由集合V和集合E组成&#xff0c;记作G(V,E),其中&#xff1a; 1、V是顶点元素的有限集合&#xff1b; 2、E是顶点间关系——边的有限集合。 3、边是顶点的无序对或有序对。 无向图和有向图&#xff1a; 无向图 由没有方向的边构成的图…

HTMLCSS:爱上班的猫咪

这段HTML和CSS代码是一个SVG动画的示例&#xff0c;它描述了一个包含猫咪和笔记本电脑的复杂场景 HTML <div class"content"><div class"container"><svg id"bongo-cat" xmlns"http://www.w3.org/2000/svg" xmlns:x…

CPU Study - Pipeline Basic

参考来源&#xff1a;《超标量处理器设计》—— 姚永斌 超标量处理器 一个程序执行时间的公式如下&#xff0c;而这个公式通常也反映了处理器的性能&#xff1a; 图中的CPI - Cycle Per Instruction也就是CPU每条指令需要的周期数量&#xff0c;CPI计算方法就是周期数量除以…

keep-alive - 2024最新版前端秋招面试短期突击面试题【100道】

keep-alive - 2024最新版前端秋招面试短期突击面试题【100道】 &#x1f5c4;️ <keep-alive> 是 Vue.js 中的一个内置组件&#xff0c;用于在组件切换时缓存组件的状态&#xff0c;避免重复渲染&#xff0c;从而提升应用性能。以下是关于 keep-alive 的详细总结。 1. …

Debezium系列之:Debezium3版本增量快照和只读增量快照应用的变化

Debezium系列之:Debezium3版本增量快照和只读增量快照应用的变化 一、需求背景二、基于数据库信号表使用增量快照案例三、基于Kafka信号Topic使用增量快照案例四、只读增量快照案例五、增量快照技术总结增量快照相关知识请阅读博主下面系列文章: Debezium系列之:实现增量快照…

YOLO即插即用---PConv

Run, Don’t Walk: Chasing Higher FLOPS for Faster Neural Networks 论文地址&#xff1a; 1. 论文解决的问题 2. 解决问题的方法 3. PConv 的适用范围 4. PConv 在目标检测中的应用 5. 评估方法 6. 潜在挑战 7. 未来研究方向 8.即插即用代码 论文地址&#xff1a; …

【JavaScript】V8,Nodejs 与浏览器

V8 V8 是一个 JavaScript engine&#xff0c;负责编译并执行 JavaScript 源代码&#xff0c;处理对象的内存分配&#xff0c;并对不再需要的对象进行垃圾收集。 V8 包含两个主要组件&#xff1a; Memory Heap&#xff1a;负责存储分配。 Call Stack&#xff1a;代码执行时&am…

RoCE与IB对比分析(一):协议栈层级篇

在 AI 算力建设中&#xff0c; RDMA 技术是支持高吞吐、低延迟网络通信的关键。目前&#xff0c;RDMA技术主要通过两种方案实现&#xff1a;Infiniband和RoCE&#xff08;基于RDMA的以太网技术&#xff0c;以下简称为RoCE&#xff09;。 RoCE与IB网络架构概述 RoCE和InfiniBa…

AI - 使用LangChain请求LLM结构化生成内容

AI - 使用LangChain请求LLM结构化生成内容 基于深度学习的大型语言模型&#xff08;LLM&#xff09;不仅可以生成文本&#xff0c;还可以帮助我们完成许多复杂任务&#xff0c;如自动化客服、内容创作和数据分析。然而&#xff0c;如何从这些模型中结构化地获取输出&#xff0c…

lsblk 命令学习

一、命令介绍 lsblk(list block devices) 是一个用于列出块设备的命令&#xff0c;它提供了关于系统中所有块设备的详细信息。块设备包括硬盘、分区、磁盘镜像文件等。lsblk 命令非常有用&#xff0c;特别是在需要查看和管理存储设备时。 $ lsblk NAME MAJ:MIN RM SIZE RO…

Linux基础-常用操作命令详讲

Linux基础-常用操作命令详讲 一、openssl加密简单介绍 1. 生成加密的密码散列&#xff08;password hash&#xff09;​编辑 1.1 常见的选项总结表 1.2 加密参数详解 2. 自签名证书 3. 证书转换 二、文件管理 1. 创建空文件 ​编辑 2. 删除文件 4. 新建目录 ​编辑…

Windows、Linux系统上进行CPU和内存压力测试

CPU和内存压力测试 1. Linux环境 Linux环境下&#xff0c;我们可以用 stress 工具进行内存、CPU等的压力测试。 【1】. stress工具说明 [kalamikysrv1 ~]$ stress --help stress imposes certain types of compute stress on your systemUsage: stress [OPTION [ARG]] ...-…

windows C#-析构元组和其他类型(下)

用户定义类型的扩展方法 如果没有创建类、结构或接口&#xff0c;仍可通过实现一个或多个 Deconstruct 扩展方法来析构该类型的对象&#xff0c;以返回所需值。 以下示例为 System.Reflection.PropertyInfo 类定义了两个 Deconstruct 扩展方法。 第一个方法返回一组值&#x…

Linux 经典面试八股文

快速鉴别十个题 1&#xff0c;你如何描述Linux文件系统的结构&#xff1f; 答案应包括对/, /etc, /var, /home, /bin, /lib, /usr, 和 /tmp等常见目录的功能和用途的描述。 2&#xff0c;在Linux中如何查看和终止正在运行的进程&#xff1f; 期望的答案应涵盖ps, top, htop, …

香港服务器网络延迟的测量指标包括哪些?

网络延迟是影响香港服务器性能和用户体验的关键因素。网络延迟是指数据包从源头传输到目的地所需的时间。延迟的产生可能受到多种因素的影响&#xff0c;包括网络拥塞、传输媒介、路由器处理时间等。理解延迟的不同测量指标是评估和优化网络性能的重要基础。 主要测量指标&…

各种网络设备的工作原理

网络设备的工作原理涉及多种设备&#xff0c;包括路由器、交换机、防火墙等&#xff0c;它们各自承担着不同的功能。以下是对这些设备工作原理的详细解释&#xff1a; 一、路由器路由器是互联网通信中的关键设备&#xff0c;它负责在不同网络之间传输数据包。功能&#xff1a;路…

GEE 使用 JavaScript 中的 API 自动删除文件夹内的所有资产

目录 简介 函数 ee.data.listAssets(parent, params, callback) Arguments: Returns: api.ListAssetsResponse ee.data.deleteAsset(assetId, callback) Arguments: forEach(outputNames) Arguments: Returns: Reducer 代码 简介 使用 JavaScript 中的 API 自动删除…

JVM知识点大全(未完...)

JVM运行时数据区域 堆 堆是Java虚拟机中用于存储对象的主要区域&#xff0c;包括字符串常量池。绝大多数对象都是在堆中创建的&#xff08;少部分对象可能会在栈上分配&#xff09;。为了更好地进行垃圾回收&#xff0c;堆被划分为年轻代和老年代两部分。年轻代又被进一步分为E…

九宫格按键输入

题目描述 九宫格按键输入&#xff0c;有英文和数字两个模式&#xff0c;默认是数字模式&#xff0c;数字模式直接输出数字&#xff0c;英文模式连续按同一个按键会依次出现这个按键上的字母&#xff0c;如果输入""或者其他字符&#xff0c;则循环中断&#xff0c;输…