u
This commit is contained in:
parent
d06fa02df2
commit
3279ef8ab5
@ -17,4 +17,8 @@ PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
|
|||||||
<setting name="mapUnderscoreToCamelCase" value="true"/>
|
<setting name="mapUnderscoreToCamelCase" value="true"/>
|
||||||
</settings>
|
</settings>
|
||||||
|
|
||||||
|
<plugins>
|
||||||
|
<plugin interceptor="com.ruoyi.mybatisinterceptor.interceptor.mybatis.MybatisInterceptor"></plugin>
|
||||||
|
</plugins>
|
||||||
|
|
||||||
</configuration>
|
</configuration>
|
||||||
|
@ -1,20 +0,0 @@
|
|||||||
package com.ruoyi.common.annotation.sql;
|
|
||||||
|
|
||||||
import java.lang.annotation.Documented;
|
|
||||||
import java.lang.annotation.ElementType;
|
|
||||||
import java.lang.annotation.Retention;
|
|
||||||
import java.lang.annotation.RetentionPolicy;
|
|
||||||
import java.lang.annotation.Target;
|
|
||||||
|
|
||||||
import com.ruoyi.common.enums.DataSecurityStrategy;
|
|
||||||
|
|
||||||
@Target(ElementType.METHOD)
|
|
||||||
@Retention(RetentionPolicy.RUNTIME)
|
|
||||||
@Documented
|
|
||||||
public @interface DataSecurity {
|
|
||||||
public DataSecurityStrategy strategy() default DataSecurityStrategy.CREEATE_BY;
|
|
||||||
|
|
||||||
public String table() default "";
|
|
||||||
|
|
||||||
public String joinTableAlise() default "";
|
|
||||||
}
|
|
@ -1,14 +0,0 @@
|
|||||||
package com.ruoyi.common.annotation.sql;
|
|
||||||
|
|
||||||
import java.lang.annotation.Documented;
|
|
||||||
import java.lang.annotation.ElementType;
|
|
||||||
import java.lang.annotation.Retention;
|
|
||||||
import java.lang.annotation.RetentionPolicy;
|
|
||||||
import java.lang.annotation.Target;
|
|
||||||
|
|
||||||
@Target(ElementType.TYPE)
|
|
||||||
@Retention(RetentionPolicy.RUNTIME)
|
|
||||||
@Documented
|
|
||||||
public @interface MybatisHandlerOrder {
|
|
||||||
public int value() default 0;
|
|
||||||
}
|
|
@ -45,11 +45,6 @@
|
|||||||
<version>${ruoyi.version}</version>
|
<version>${ruoyi.version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<dependency>
|
|
||||||
<groupId>com.ruoyi</groupId>
|
|
||||||
<artifactId>ruoyi-midleware-mybatis-interceptor</artifactId>
|
|
||||||
<version>${ruoyi.version}</version>
|
|
||||||
</dependency>
|
|
||||||
</dependencies>
|
</dependencies>
|
||||||
</dependencyManagement>
|
</dependencyManagement>
|
||||||
|
|
||||||
@ -58,7 +53,7 @@
|
|||||||
<module>ruoyi-middleware-minio</module>
|
<module>ruoyi-middleware-minio</module>
|
||||||
<module>ruoyi-middleware-redis</module>
|
<module>ruoyi-middleware-redis</module>
|
||||||
<module>ruoyi-middleware-starter</module>
|
<module>ruoyi-middleware-starter</module>
|
||||||
<module>ruoyi-midleware-mybatis-interceptor</module>
|
|
||||||
</modules>
|
</modules>
|
||||||
<packaging>pom</packaging>
|
<packaging>pom</packaging>
|
||||||
</project>
|
</project>
|
||||||
|
@ -32,10 +32,6 @@
|
|||||||
<artifactId>ruoyi-middleware-redis</artifactId>
|
<artifactId>ruoyi-middleware-redis</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<dependency>
|
|
||||||
<groupId>com.ruoyi</groupId>
|
|
||||||
<artifactId>ruoyi-midleware-mybatis-interceptor</artifactId>
|
|
||||||
</dependency>
|
|
||||||
|
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
|
@ -80,6 +80,12 @@
|
|||||||
<artifactId>ruoyi-plugins-starter</artifactId>
|
<artifactId>ruoyi-plugins-starter</artifactId>
|
||||||
<version>${ruoyi.version}</version>
|
<version>${ruoyi.version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.ruoyi</groupId>
|
||||||
|
<artifactId>ruoyi-mybatis-interceptor</artifactId>
|
||||||
|
<version>${ruoyi.version}</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
</dependencies>
|
</dependencies>
|
||||||
</dependencyManagement>
|
</dependencyManagement>
|
||||||
|
|
||||||
@ -90,6 +96,7 @@
|
|||||||
<module>ruoyi-mybatis-plus</module>
|
<module>ruoyi-mybatis-plus</module>
|
||||||
<module>ruoyi-websocket</module>
|
<module>ruoyi-websocket</module>
|
||||||
<module>ruoyi-plugins-starter</module>
|
<module>ruoyi-plugins-starter</module>
|
||||||
|
<module>ruoyi-mybatis-interceptor</module>
|
||||||
</modules>
|
</modules>
|
||||||
<packaging>pom</packaging>
|
<packaging>pom</packaging>
|
||||||
</project>
|
</project>
|
@ -3,13 +3,13 @@
|
|||||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||||
<parent>
|
<parent>
|
||||||
<artifactId>ruoyi-middleware</artifactId>
|
<artifactId>ruoyi-plugins</artifactId>
|
||||||
<groupId>com.ruoyi</groupId>
|
<groupId>com.ruoyi</groupId>
|
||||||
<version>3.8.8.3.1</version>
|
<version>3.8.8.3.1</version>
|
||||||
</parent>
|
</parent>
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|
||||||
<artifactId>ruoyi-midleware-mybatis-interceptor</artifactId>
|
<artifactId>ruoyi-mybatis-interceptor</artifactId>
|
||||||
|
|
||||||
<properties>
|
<properties>
|
||||||
<maven.compiler.source>19</maven.compiler.source>
|
<maven.compiler.source>19</maven.compiler.source>
|
||||||
@ -19,7 +19,12 @@
|
|||||||
<dependencies>
|
<dependencies>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.ruoyi</groupId>
|
<groupId>com.ruoyi</groupId>
|
||||||
<artifactId>ruoyi-framework</artifactId>
|
<artifactId>ruoyi-common</artifactId>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-starter-aop</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
@ -1,6 +1,6 @@
|
|||||||
package annotation;
|
package com.ruoyi.mybatisinterceptor.annotation;
|
||||||
|
|
||||||
import com.ruoyi.common.enums.DataSecurityStrategy;
|
import com.ruoyi.mybatisinterceptor.enums.DataSecurityStrategy;
|
||||||
|
|
||||||
import java.lang.annotation.*;
|
import java.lang.annotation.*;
|
||||||
|
|
@ -1,4 +1,4 @@
|
|||||||
package annotation;
|
package com.ruoyi.mybatisinterceptor.annotation;
|
||||||
|
|
||||||
import java.lang.annotation.*;
|
import java.lang.annotation.*;
|
||||||
|
|
@ -1,19 +1,21 @@
|
|||||||
package aspectj;
|
package com.ruoyi.mybatisinterceptor.aspectj;
|
||||||
|
|
||||||
import context.dataSecurity.SqlContextHolder;
|
import com.ruoyi.mybatisinterceptor.annotation.DataSecurity;
|
||||||
|
import com.ruoyi.mybatisinterceptor.model.JoinTableModel;
|
||||||
|
import com.ruoyi.mybatisinterceptor.model.WhereModel;
|
||||||
|
import com.ruoyi.mybatisinterceptor.context.dataSecurity.SqlContextHolder;
|
||||||
import org.aspectj.lang.JoinPoint;
|
import org.aspectj.lang.JoinPoint;
|
||||||
import org.aspectj.lang.annotation.After;
|
import org.aspectj.lang.annotation.After;
|
||||||
import org.aspectj.lang.annotation.Aspect;
|
import org.aspectj.lang.annotation.Aspect;
|
||||||
import org.aspectj.lang.annotation.Before;
|
import org.aspectj.lang.annotation.Before;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
import com.ruoyi.common.annotation.sql.DataSecurity;
|
|
||||||
|
|
||||||
import com.ruoyi.common.model.JoinTableModel;
|
|
||||||
import com.ruoyi.common.model.WhereModel;
|
|
||||||
import com.ruoyi.common.utils.SecurityUtils;
|
import com.ruoyi.common.utils.SecurityUtils;
|
||||||
import com.ruoyi.common.utils.StringUtils;
|
import com.ruoyi.common.utils.StringUtils;
|
||||||
|
|
||||||
|
|
||||||
@Aspect
|
@Aspect
|
||||||
@Component
|
@Component
|
||||||
public class DataSecurityAspect {
|
public class DataSecurityAspect {
|
@ -1,10 +1,10 @@
|
|||||||
package context.dataSecurity;
|
package com.ruoyi.mybatisinterceptor.context.dataSecurity;
|
||||||
|
|
||||||
import com.alibaba.fastjson2.JSONArray;
|
import com.alibaba.fastjson2.JSONArray;
|
||||||
import com.alibaba.fastjson2.JSONObject;
|
import com.alibaba.fastjson2.JSONObject;
|
||||||
import com.ruoyi.common.enums.SqlType;
|
import com.ruoyi.mybatisinterceptor.enums.SqlType;
|
||||||
import com.ruoyi.common.model.JoinTableModel;
|
import com.ruoyi.mybatisinterceptor.model.JoinTableModel;
|
||||||
import com.ruoyi.common.model.WhereModel;
|
import com.ruoyi.mybatisinterceptor.model.WhereModel;
|
||||||
|
|
||||||
public class SqlContextHolder {
|
public class SqlContextHolder {
|
||||||
private static final ThreadLocal<JSONObject> SQL_CONTEXT_HOLDER = new ThreadLocal<>();
|
private static final ThreadLocal<JSONObject> SQL_CONTEXT_HOLDER = new ThreadLocal<>();
|
@ -1,7 +1,7 @@
|
|||||||
package context.page;
|
package com.ruoyi.mybatisinterceptor.context.page;
|
||||||
|
|
||||||
import com.alibaba.fastjson2.JSONObject;
|
import com.alibaba.fastjson2.JSONObject;
|
||||||
import context.page.model.PageInfo;
|
import com.ruoyi.mybatisinterceptor.context.page.model.PageInfo;
|
||||||
|
|
||||||
public class PageContextHolder {
|
public class PageContextHolder {
|
||||||
private static final ThreadLocal<JSONObject> PAGE_CONTEXT_HOLDER = new ThreadLocal<>();
|
private static final ThreadLocal<JSONObject> PAGE_CONTEXT_HOLDER = new ThreadLocal<>();
|
@ -1,4 +1,4 @@
|
|||||||
package context.page.model;
|
package com.ruoyi.mybatisinterceptor.context.page.model;
|
||||||
|
|
||||||
import com.ruoyi.common.core.text.Convert;
|
import com.ruoyi.common.core.text.Convert;
|
||||||
import com.ruoyi.common.utils.ServletUtils;
|
import com.ruoyi.common.utils.ServletUtils;
|
@ -1,4 +1,4 @@
|
|||||||
package context.page.model;
|
package com.ruoyi.mybatisinterceptor.context.page.model;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
@ -1,4 +1,4 @@
|
|||||||
package context.page.model;
|
package com.ruoyi.mybatisinterceptor.context.page.model;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
@ -1,4 +1,4 @@
|
|||||||
package com.ruoyi.common.enums;
|
package com.ruoyi.mybatisinterceptor.enums;
|
||||||
|
|
||||||
public enum DataSecurityStrategy {
|
public enum DataSecurityStrategy {
|
||||||
JOINTABLE_CREATE_BY,
|
JOINTABLE_CREATE_BY,
|
@ -1,4 +1,4 @@
|
|||||||
package com.ruoyi.common.enums;
|
package com.ruoyi.mybatisinterceptor.enums;
|
||||||
|
|
||||||
public enum SqlType {
|
public enum SqlType {
|
||||||
WHERE("where"),
|
WHERE("where"),
|
@ -0,0 +1,129 @@
|
|||||||
|
package com.ruoyi.mybatisinterceptor.interceptor.mybatis;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
import com.ruoyi.mybatisinterceptor.annotation.MybatisHandlerOrder;
|
||||||
|
import com.ruoyi.mybatisinterceptor.sql.MybatisAfterHandler;
|
||||||
|
import com.ruoyi.mybatisinterceptor.sql.MybatisPreHandler;
|
||||||
|
import org.apache.ibatis.cache.CacheKey;
|
||||||
|
import org.apache.ibatis.executor.Executor;
|
||||||
|
import org.apache.ibatis.mapping.BoundSql;
|
||||||
|
import org.apache.ibatis.mapping.MappedStatement;
|
||||||
|
import org.apache.ibatis.plugin.Interceptor;
|
||||||
|
import org.apache.ibatis.plugin.Intercepts;
|
||||||
|
import org.apache.ibatis.plugin.Invocation;
|
||||||
|
import org.apache.ibatis.plugin.Signature;
|
||||||
|
import org.apache.ibatis.session.ResultHandler;
|
||||||
|
import org.apache.ibatis.session.RowBounds;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
|
||||||
|
import jakarta.annotation.PostConstruct;
|
||||||
|
|
||||||
|
@Component
|
||||||
|
@Intercepts({
|
||||||
|
@Signature(type = Executor.class, method = "query", args = { MappedStatement.class, Object.class,
|
||||||
|
RowBounds.class, ResultHandler.class, CacheKey.class, BoundSql.class }),
|
||||||
|
@Signature(type = Executor.class, method = "query", args = {
|
||||||
|
MappedStatement.class, Object.class, RowBounds.class,
|
||||||
|
ResultHandler.class })
|
||||||
|
|
||||||
|
})
|
||||||
|
public class MybatisInterceptor implements Interceptor {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private List<MybatisPreHandler> preHandlerBeans;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private List<MybatisAfterHandler> afterHandlerBeans;
|
||||||
|
|
||||||
|
private static List<MybatisPreHandler> preHandlersChain;
|
||||||
|
|
||||||
|
private static List<MybatisAfterHandler> afterHandlersChain;
|
||||||
|
|
||||||
|
@PostConstruct
|
||||||
|
public void init() {
|
||||||
|
List<MybatisPreHandler> sortedPreHandlers = preHandlerBeans.stream().sorted((item1, item2) -> {
|
||||||
|
int a;
|
||||||
|
int b;
|
||||||
|
MybatisHandlerOrder ann1 = item1.getClass().getAnnotation(MybatisHandlerOrder.class);
|
||||||
|
MybatisHandlerOrder ann2 = item2.getClass().getAnnotation(MybatisHandlerOrder.class);
|
||||||
|
if (ann1 == null) {
|
||||||
|
a = 0;
|
||||||
|
} else {
|
||||||
|
a = ann1.value();
|
||||||
|
}
|
||||||
|
if (ann2 == null) {
|
||||||
|
b = 0;
|
||||||
|
} else {
|
||||||
|
b = ann2.value();
|
||||||
|
}
|
||||||
|
return a - b;
|
||||||
|
}).collect(Collectors.toList());
|
||||||
|
preHandlersChain = sortedPreHandlers;
|
||||||
|
|
||||||
|
List<MybatisAfterHandler> sortedAfterHandlers = afterHandlerBeans.stream().sorted((item1, item2) -> {
|
||||||
|
int a;
|
||||||
|
int b;
|
||||||
|
MybatisHandlerOrder ann1 = item1.getClass().getAnnotation(MybatisHandlerOrder.class);
|
||||||
|
MybatisHandlerOrder ann2 = item2.getClass().getAnnotation(MybatisHandlerOrder.class);
|
||||||
|
if (ann1 == null) {
|
||||||
|
a = 0;
|
||||||
|
} else {
|
||||||
|
a = ann1.value();
|
||||||
|
}
|
||||||
|
if (ann2 == null) {
|
||||||
|
b = 0;
|
||||||
|
} else {
|
||||||
|
b = ann2.value();
|
||||||
|
}
|
||||||
|
return a - b;
|
||||||
|
}).collect(Collectors.toList());
|
||||||
|
afterHandlersChain = sortedAfterHandlers;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Object intercept(Invocation invocation) throws Throwable {
|
||||||
|
Executor targetExecutor = (Executor) invocation.getTarget();
|
||||||
|
Object[] args = invocation.getArgs();
|
||||||
|
if (args.length < 6) {
|
||||||
|
if (preHandlersChain != null && preHandlersChain.size() > 0) {
|
||||||
|
MappedStatement ms = (MappedStatement) args[0];
|
||||||
|
Object parameterObject = args[1];
|
||||||
|
RowBounds rowBounds = (RowBounds) args[2];
|
||||||
|
Executor executor = (Executor) invocation.getTarget();
|
||||||
|
BoundSql boundSql = ms.getBoundSql(parameterObject);
|
||||||
|
// 可以对参数做各种处理
|
||||||
|
CacheKey cacheKey = executor.createCacheKey(ms, parameterObject, rowBounds, boundSql);
|
||||||
|
for (MybatisPreHandler item : preHandlersChain) {
|
||||||
|
item.preHandle(targetExecutor, ms, args[1], (RowBounds) args[2],
|
||||||
|
(ResultHandler) args[3], cacheKey, boundSql);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Object result = invocation.proceed();
|
||||||
|
if (afterHandlersChain != null && afterHandlersChain.size() > 0) {
|
||||||
|
for (MybatisAfterHandler item : afterHandlersChain) {
|
||||||
|
item.handleObject(result);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
if (preHandlersChain != null && preHandlersChain.size() > 0) {
|
||||||
|
for (MybatisPreHandler item : preHandlersChain) {
|
||||||
|
item.preHandle(targetExecutor, (MappedStatement) args[0], args[1], (RowBounds) args[2],
|
||||||
|
(ResultHandler) args[3], (CacheKey) args[4], (BoundSql) args[5]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Object result = invocation.proceed();
|
||||||
|
if (afterHandlersChain != null && afterHandlersChain.size() > 0) {
|
||||||
|
for (MybatisAfterHandler item : afterHandlersChain) {
|
||||||
|
result = item.handleObject(result);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -1,4 +1,4 @@
|
|||||||
package com.ruoyi.common.model;
|
package com.ruoyi.mybatisinterceptor.model;
|
||||||
|
|
||||||
import com.ruoyi.common.utils.StringUtils;
|
import com.ruoyi.common.utils.StringUtils;
|
||||||
|
|
@ -1,4 +1,4 @@
|
|||||||
package com.ruoyi.common.model;
|
package com.ruoyi.mybatisinterceptor.model;
|
||||||
|
|
||||||
import com.ruoyi.common.utils.StringUtils;
|
import com.ruoyi.common.utils.StringUtils;
|
||||||
|
|
@ -1,8 +1,11 @@
|
|||||||
package interceptor.mybatis;
|
package com.ruoyi.mybatisinterceptor.mybatis;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
import com.ruoyi.mybatisinterceptor.annotation.MybatisHandlerOrder;
|
||||||
|
import com.ruoyi.mybatisinterceptor.sql.MybatisAfterHandler;
|
||||||
|
import com.ruoyi.mybatisinterceptor.sql.MybatisPreHandler;
|
||||||
import org.apache.ibatis.cache.CacheKey;
|
import org.apache.ibatis.cache.CacheKey;
|
||||||
import org.apache.ibatis.executor.Executor;
|
import org.apache.ibatis.executor.Executor;
|
||||||
import org.apache.ibatis.mapping.BoundSql;
|
import org.apache.ibatis.mapping.BoundSql;
|
||||||
@ -16,12 +19,9 @@ import org.apache.ibatis.session.RowBounds;
|
|||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
import com.ruoyi.common.annotation.sql.MybatisHandlerOrder;
|
|
||||||
|
|
||||||
|
|
||||||
import jakarta.annotation.PostConstruct;
|
import jakarta.annotation.PostConstruct;
|
||||||
import sql.MybatisAfterHandler;
|
|
||||||
import sql.MybatisPreHandler;
|
|
||||||
|
|
||||||
@Component
|
@Component
|
||||||
@Intercepts({
|
@Intercepts({
|
@ -1,4 +1,4 @@
|
|||||||
package sql;
|
package com.ruoyi.mybatisinterceptor.sql;
|
||||||
|
|
||||||
public interface MybatisAfterHandler {
|
public interface MybatisAfterHandler {
|
||||||
|
|
@ -1,4 +1,4 @@
|
|||||||
package sql;
|
package com.ruoyi.mybatisinterceptor.sql;
|
||||||
|
|
||||||
import org.apache.ibatis.cache.CacheKey;
|
import org.apache.ibatis.cache.CacheKey;
|
||||||
import org.apache.ibatis.executor.Executor;
|
import org.apache.ibatis.executor.Executor;
|
@ -1,8 +1,13 @@
|
|||||||
package sql.dataSecurity;
|
package com.ruoyi.mybatisinterceptor.sql.dataSecurity;
|
||||||
|
|
||||||
import java.lang.reflect.Field;
|
import java.lang.reflect.Field;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import com.ruoyi.mybatisinterceptor.annotation.MybatisHandlerOrder;
|
||||||
|
import com.ruoyi.mybatisinterceptor.context.dataSecurity.SqlContextHolder;
|
||||||
|
import com.ruoyi.mybatisinterceptor.model.JoinTableModel;
|
||||||
|
import com.ruoyi.mybatisinterceptor.model.WhereModel;
|
||||||
|
import com.ruoyi.mybatisinterceptor.sql.MybatisPreHandler;
|
||||||
import org.apache.ibatis.cache.CacheKey;
|
import org.apache.ibatis.cache.CacheKey;
|
||||||
import org.apache.ibatis.executor.Executor;
|
import org.apache.ibatis.executor.Executor;
|
||||||
import org.apache.ibatis.mapping.BoundSql;
|
import org.apache.ibatis.mapping.BoundSql;
|
||||||
@ -11,15 +16,8 @@ import org.apache.ibatis.session.ResultHandler;
|
|||||||
import org.apache.ibatis.session.RowBounds;
|
import org.apache.ibatis.session.RowBounds;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
import org.springframework.util.ReflectionUtils;
|
import org.springframework.util.ReflectionUtils;
|
||||||
|
|
||||||
import com.ruoyi.common.annotation.sql.MybatisHandlerOrder;
|
|
||||||
import context.dataSecurity.SqlContextHolder;
|
|
||||||
import sql.MybatisPreHandler;
|
|
||||||
import com.ruoyi.common.model.JoinTableModel;
|
|
||||||
import com.ruoyi.common.model.WhereModel;
|
|
||||||
import com.ruoyi.common.utils.StringUtils;
|
import com.ruoyi.common.utils.StringUtils;
|
||||||
import com.ruoyi.common.utils.sql.SqlUtil;
|
import com.ruoyi.common.utils.sql.SqlUtil;
|
||||||
|
|
||||||
import net.sf.jsqlparser.JSQLParserException;
|
import net.sf.jsqlparser.JSQLParserException;
|
||||||
import net.sf.jsqlparser.expression.Alias;
|
import net.sf.jsqlparser.expression.Alias;
|
||||||
import net.sf.jsqlparser.expression.Expression;
|
import net.sf.jsqlparser.expression.Expression;
|
@ -1,13 +1,14 @@
|
|||||||
package sql.page;
|
package com.ruoyi.mybatisinterceptor.sql.page;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import com.ruoyi.mybatisinterceptor.annotation.MybatisHandlerOrder;
|
||||||
|
import com.ruoyi.mybatisinterceptor.context.page.PageContextHolder;
|
||||||
|
import com.ruoyi.mybatisinterceptor.context.page.model.TableInfo;
|
||||||
|
import com.ruoyi.mybatisinterceptor.sql.MybatisAfterHandler;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
import com.ruoyi.common.annotation.sql.MybatisHandlerOrder;
|
|
||||||
import context.page.PageContextHolder;
|
|
||||||
import context.page.model.TableInfo;
|
|
||||||
import sql.MybatisAfterHandler;
|
|
||||||
|
|
||||||
@MybatisHandlerOrder(1)
|
@MybatisHandlerOrder(1)
|
||||||
@Component
|
@Component
|
@ -1,10 +1,15 @@
|
|||||||
package sql.page;
|
package com.ruoyi.mybatisinterceptor.sql.page;
|
||||||
|
|
||||||
import java.lang.reflect.Field;
|
import java.lang.reflect.Field;
|
||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
|
import com.ruoyi.mybatisinterceptor.annotation.MybatisHandlerOrder;
|
||||||
|
import com.ruoyi.mybatisinterceptor.context.page.PageContextHolder;
|
||||||
|
import com.ruoyi.mybatisinterceptor.context.page.model.PageInfo;
|
||||||
|
import com.ruoyi.mybatisinterceptor.sql.MybatisPreHandler;
|
||||||
import org.apache.ibatis.cache.CacheKey;
|
import org.apache.ibatis.cache.CacheKey;
|
||||||
import org.apache.ibatis.executor.Executor;
|
import org.apache.ibatis.executor.Executor;
|
||||||
import org.apache.ibatis.mapping.BoundSql;
|
import org.apache.ibatis.mapping.BoundSql;
|
||||||
@ -15,11 +20,6 @@ import org.apache.ibatis.session.ResultHandler;
|
|||||||
import org.apache.ibatis.session.RowBounds;
|
import org.apache.ibatis.session.RowBounds;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
import org.springframework.util.ReflectionUtils;
|
import org.springframework.util.ReflectionUtils;
|
||||||
|
|
||||||
import com.ruoyi.common.annotation.sql.MybatisHandlerOrder;
|
|
||||||
import context.page.PageContextHolder;
|
|
||||||
import context.page.model.PageInfo;
|
|
||||||
import sql.MybatisPreHandler;
|
|
||||||
import com.ruoyi.common.utils.sql.SqlUtil;
|
import com.ruoyi.common.utils.sql.SqlUtil;
|
||||||
import net.sf.jsqlparser.schema.Column;
|
import net.sf.jsqlparser.schema.Column;
|
||||||
import net.sf.jsqlparser.statement.Statement;
|
import net.sf.jsqlparser.statement.Statement;
|
@ -1,7 +1,7 @@
|
|||||||
package util;
|
package com.ruoyi.mybatisinterceptor.util;
|
||||||
|
|
||||||
|
|
||||||
import context.dataSecurity.SqlContextHolder;
|
import com.ruoyi.mybatisinterceptor.context.dataSecurity.SqlContextHolder;
|
||||||
|
|
||||||
public class DataSecurityUtil {
|
public class DataSecurityUtil {
|
||||||
|
|
@ -1,4 +1,4 @@
|
|||||||
package util;
|
package com.ruoyi.mybatisinterceptor.util;
|
||||||
|
|
||||||
import com.ruoyi.common.exception.UtilException;
|
import com.ruoyi.common.exception.UtilException;
|
||||||
import com.ruoyi.common.utils.StringUtils;
|
import com.ruoyi.common.utils.StringUtils;
|
@ -45,6 +45,11 @@
|
|||||||
<groupId>com.ruoyi</groupId>
|
<groupId>com.ruoyi</groupId>
|
||||||
<artifactId>ruoyi-mybatis-plus</artifactId>
|
<artifactId>ruoyi-mybatis-plus</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.ruoyi</groupId>
|
||||||
|
<artifactId>ruoyi-mybatis-interceptor</artifactId>
|
||||||
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
</project>
|
</project>
|
||||||
|
Loading…
Reference in New Issue
Block a user