@Slf4j @Aspect public class BladeTenantAspect { @Around("@annotation(tenantIgnore)") public Object around(ProceedingJoinPoint point, TenantIgnore tenantIgnore) throws Throwable { try { //开启忽略 BladeTenantHolder.setIgnore(Boolean.TRUE); //执行方法 return point.proceed(); } finally { //关闭忽略 BladeTenantHolder.clear(); } } }
方法嵌套时会在执行第一个mapper方法后执行下面这个方法(可自行debug查看源码实现)
BladeTenantHolder.clear()
案例:
@TenantIgnore m1(){ m2(); m3(); } m2(){ m2Mapper.selectOne(); } m3(){ m3Mapper.selectOne(); }
导致:ignore忽略租户标识清除,后面的mapper方法取不到ignore标识,执行mybatisplus方法时拼接tenant_id。
建议改造方案(仅供参考):
@Around("@annotation(tenantIgnore)")
public Object around(ProceedingJoinPoint point, TenantIgnore tenantIgnore) throws Throwable { Boolean ignore = BladeTenantHolder.isIgnore(); if (ignore){ return point.proceed(); } try { //开启忽略 BladeTenantHolder.setIgnore(Boolean.TRUE); //执行方法 return point.proceed(); } finally { //关闭忽略 BladeTenantHolder.clear(); } }
讨论(0)
-
你好,请将账号绑定邮箱改为授权qq邮箱方可进行商业版答疑。这个问题是你注解方法上加错了,要加到list方法不是page方法。前端调用的是list,你给page自然是没反应的。
讨论(2)
-
公司购买的,我只有一个购买截图。
作者追问:2024-01-10 16:51
就拿这个2开头的qq邮箱绑定你这个账号。或者用这个授权账号注册社区再提问,或者让这个授权邮箱给我们发邮件,说明你的帐号是公司员工持有,这样我们就会把你标记成商业账号了。
我们的邮箱:bladejava@qq.com
讨论(0)
- 热议问题
-
API报文加密,返回前端数据未使用全局ObjectMapper处理导致数据精度丢失
1
-
大模型平台对话流程编排怎么实现
1
-
mqtt调试支持mqtt协议
1
-
mqtt客户端报错
2
-
设备模拟器未开启成功
1
-
device-simulator启动显示离线状态
2
-
关于多租户分库分表拆问题
1
-
数据大屏 对接权限系统 好搞么
1
-
mvn clean报错
1
-
请问时间控件如何改为24小时制
1
扫一扫访问 Blade技术社区 移动端