bug-fix:
1. 增加SQL拦截器对注解的适配 Signed-off-by: mrz <17966059@qq.com>
正在显示
1 个修改的文件
包含
15 行增加
和
0 行删除
@@ -3,6 +3,7 @@ package com.tianbo.analysis.intercept; | @@ -3,6 +3,7 @@ package com.tianbo.analysis.intercept; | ||
3 | import com.alibaba.fastjson.JSON; | 3 | import com.alibaba.fastjson.JSON; |
4 | import com.alibaba.fastjson.JSONArray; | 4 | import com.alibaba.fastjson.JSONArray; |
5 | import com.alibaba.fastjson.JSONObject; | 5 | import com.alibaba.fastjson.JSONObject; |
6 | +import com.tianbo.analysis.annotation.DataPermission; | ||
6 | import com.tianbo.analysis.thread.SessionUserContext; | 7 | import com.tianbo.analysis.thread.SessionUserContext; |
7 | import lombok.extern.slf4j.Slf4j; | 8 | import lombok.extern.slf4j.Slf4j; |
8 | import net.sf.jsqlparser.expression.Expression; | 9 | import net.sf.jsqlparser.expression.Expression; |
@@ -24,6 +25,7 @@ import org.apache.ibatis.session.ResultHandler; | @@ -24,6 +25,7 @@ import org.apache.ibatis.session.ResultHandler; | ||
24 | import org.apache.ibatis.session.RowBounds; | 25 | import org.apache.ibatis.session.RowBounds; |
25 | import org.springframework.stereotype.Component; | 26 | import org.springframework.stereotype.Component; |
26 | 27 | ||
28 | +import java.lang.reflect.Method; | ||
27 | import java.text.SimpleDateFormat; | 29 | import java.text.SimpleDateFormat; |
28 | import java.util.ArrayList; | 30 | import java.util.ArrayList; |
29 | import java.util.Date; | 31 | import java.util.Date; |
@@ -51,6 +53,19 @@ public class DataPermissionInterceptor implements Interceptor { | @@ -51,6 +53,19 @@ public class DataPermissionInterceptor implements Interceptor { | ||
51 | 53 | ||
52 | @Override | 54 | @Override |
53 | public Object intercept(Invocation invocation) throws Throwable { | 55 | public Object intercept(Invocation invocation) throws Throwable { |
56 | + //判定要拦截的MAPPER 注解,使用了@DataPermission注解的才会被拦截 | ||
57 | + Method method = invocation.getMethod(); | ||
58 | + // 获取Mapper接口的Class对象 | ||
59 | + Class<?> mapperClass = method.getDeclaringClass(); | ||
60 | + // 检查类或方法是否标记了@DataPermission注解 | ||
61 | + boolean isAnnotated = method.isAnnotationPresent(DataPermission.class) | ||
62 | + || mapperClass.isAnnotationPresent(DataPermission.class); | ||
63 | + | ||
64 | + // 如果没有标记注解,直接调用原方法 | ||
65 | + if (!isAnnotated){ | ||
66 | + return invocation.proceed(); | ||
67 | + } | ||
68 | + | ||
54 | //从invocation搞到sql | 69 | //从invocation搞到sql |
55 | String processSql = ExecutorPluginUtils.getSqlByInvocation(invocation); | 70 | String processSql = ExecutorPluginUtils.getSqlByInvocation(invocation); |
56 | //复制原sql,用于产生新sql | 71 | //复制原sql,用于产生新sql |
-
请 注册 或 登录 后发表评论