From cdb12bc9e0feb9c3add5407643a26ef120e37f80 Mon Sep 17 00:00:00 2001 From: guoshengxiong <1923636941@qq.com> Date: Mon, 27 May 2024 14:49:35 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9D=83=E9=99=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../zhgd/mybatis/DataScopeInterceptor.java | 28 ++++++++++++++++--- 1 file changed, 24 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/zhgd/mybatis/DataScopeInterceptor.java b/src/main/java/com/zhgd/mybatis/DataScopeInterceptor.java index 91e663e0b..91281648b 100644 --- a/src/main/java/com/zhgd/mybatis/DataScopeInterceptor.java +++ b/src/main/java/com/zhgd/mybatis/DataScopeInterceptor.java @@ -1,5 +1,6 @@ package com.zhgd.mybatis; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; @@ -31,10 +32,7 @@ import javax.servlet.http.HttpServletRequest; import java.lang.reflect.Method; import java.sql.Connection; import java.sql.SQLException; -import java.util.Arrays; -import java.util.Map; -import java.util.Objects; -import java.util.Optional; +import java.util.*; @Slf4j public class DataScopeInterceptor extends JsqlParserSupport implements InnerInterceptor { @@ -170,6 +168,14 @@ public class DataScopeInterceptor extends JsqlParserSupport implements InnerInte } else { processFromItem(fromItem, obj); } + + // 如果还存在关联查询 + List joins = plainSelect.getJoins(); + if (CollUtil.isNotEmpty(joins)) { + for (Join join : joins) { + processJoin(join, obj); + } + } } protected void processFromItem(FromItem fromItem, Object obj) { @@ -180,4 +186,18 @@ public class DataScopeInterceptor extends JsqlParserSupport implements InnerInte } } } + + + /** + * 处理关联查询 + * + * @param join 关联查询 + * @param obj + */ + protected void processJoin(Join join, Object obj) { + FromItem joinTable = join.getRightItem(); + if (joinTable instanceof SubSelect) { + processSelectBody(((SubSelect) joinTable).getSelectBody(), obj); + } + } }