@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();
}
}
你好,请将账号绑定邮箱改为授权qq邮箱方可进行商业版答疑。这个问题是你注解方法上加错了,要加到list方法不是page方法。前端调用的是list,你给page自然是没反应的。
公司购买的,我只有一个购买截图。
就拿这个2开头的qq邮箱绑定你这个账号。或者用这个授权账号注册社区再提问,或者让这个授权邮箱给我们发邮件,说明你的帐号是公司员工持有,这样我们就会把你标记成商业账号了。
我们的邮箱:bladejava@qq.com
扫一扫访问 Blade技术社区 移动端