Skip to content

Commit 4a04315

Browse files
committed
fix SQLRunningContext#intercept
1 parent 2b370a3 commit 4a04315

File tree

19 files changed

+29
-52
lines changed

19 files changed

+29
-52
lines changed

example/example-application/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<parent>
66
<artifactId>springboot-example</artifactId>
77
<groupId>com.codingapi.springboot</groupId>
8-
<version>3.3.33</version>
8+
<version>3.3.34</version>
99
</parent>
1010
<modelVersion>4.0.0</modelVersion>
1111

example/example-domain/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<parent>
66
<artifactId>springboot-example</artifactId>
77
<groupId>com.codingapi.springboot</groupId>
8-
<version>3.3.33</version>
8+
<version>3.3.34</version>
99
</parent>
1010
<modelVersion>4.0.0</modelVersion>
1111

example/example-infra-flow/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<parent>
66
<artifactId>springboot-example</artifactId>
77
<groupId>com.codingapi.springboot</groupId>
8-
<version>3.3.33</version>
8+
<version>3.3.34</version>
99
</parent>
1010
<modelVersion>4.0.0</modelVersion>
1111

example/example-infra-jpa/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<parent>
66
<artifactId>springboot-example</artifactId>
77
<groupId>com.codingapi.springboot</groupId>
8-
<version>3.3.33</version>
8+
<version>3.3.34</version>
99
</parent>
1010
<modelVersion>4.0.0</modelVersion>
1111

example/example-server/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<parent>
66
<artifactId>springboot-example</artifactId>
77
<groupId>com.codingapi.springboot</groupId>
8-
<version>3.3.33</version>
8+
<version>3.3.34</version>
99
</parent>
1010
<modelVersion>4.0.0</modelVersion>
1111

example/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
</parent>
1818

1919
<artifactId>springboot-example</artifactId>
20-
<version>3.3.33</version>
20+
<version>3.3.34</version>
2121

2222
<name>springboot-example</name>
2323
<description>springboot-example project for Spring Boot</description>

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515

1616
<groupId>com.codingapi.springboot</groupId>
1717
<artifactId>springboot-parent</artifactId>
18-
<version>3.3.33</version>
18+
<version>3.3.34</version>
1919

2020
<url>https://github.com/codingapi/springboot-framewrok</url>
2121
<name>springboot-parent</name>

springboot-starter-data-authorization/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
<parent>
77
<groupId>com.codingapi.springboot</groupId>
88
<artifactId>springboot-parent</artifactId>
9-
<version>3.3.33</version>
9+
<version>3.3.34</version>
1010
</parent>
1111

1212
<artifactId>springboot-starter-data-authorization</artifactId>
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,8 @@
1-
package com.codingapi.springboot.authorization.jdbc.proxy;
1+
package com.codingapi.springboot.authorization.interceptor;
22

3-
import com.codingapi.springboot.authorization.interceptor.SQLInterceptState;
4-
import com.codingapi.springboot.authorization.interceptor.SQLInterceptor;
5-
import com.codingapi.springboot.authorization.interceptor.SQLInterceptorContext;
63
import lombok.Getter;
74

85
import java.sql.SQLException;
9-
import java.util.function.Supplier;
106

117
/**
128
* SQLRunningContext SQL执行拦截上下文
@@ -18,9 +14,7 @@ public class SQLRunningContext {
1814

1915
private final ThreadLocal<Boolean> skipInterceptor = ThreadLocal.withInitial(() -> false);
2016

21-
private SQLRunningContext() {
22-
23-
}
17+
private SQLRunningContext() {}
2418

2519
/**
2620
* 拦截SQL
@@ -29,40 +23,32 @@ private SQLRunningContext() {
2923
* @return SQLInterceptState
3024
* @throws SQLException SQLException
3125
*/
32-
SQLInterceptState intercept(String sql) throws SQLException {
26+
public SQLInterceptState intercept(String sql) throws SQLException {
3327
SQLInterceptor sqlInterceptor = SQLInterceptorContext.getInstance().getSqlInterceptor();
3428

3529
if (skipInterceptor.get()) {
3630
return SQLInterceptState.unIntercept(sql);
3731
}
3832

3933
if (sqlInterceptor.beforeHandler(sql)) {
34+
// 在拦截器中执行的查询操作将不会被拦截
35+
skipInterceptor.set(true);
4036
try {
4137
String newSql = sqlInterceptor.postHandler(sql);
4238
sqlInterceptor.afterHandler(sql, newSql, null);
4339
return SQLInterceptState.intercept(sql, newSql);
4440
} catch (SQLException exception) {
4541
sqlInterceptor.afterHandler(sql, null, exception);
4642
throw exception;
43+
}finally {
44+
// 重置拦截器状态
45+
skipInterceptor.set(false);
4746
}
4847
}
4948
return SQLInterceptState.unIntercept(sql);
5049
}
5150

5251

53-
/**
54-
* 执行SQL查询 (非拦截模型执行)
55-
*
56-
* @param supplier 业务逻辑
57-
* @param <T> T
58-
* @return T
59-
*/
60-
public <T> T run(Supplier<T> supplier) {
61-
try {
62-
skipInterceptor.set(true);
63-
return supplier.get();
64-
} finally {
65-
skipInterceptor.set(false);
66-
}
67-
}
52+
53+
6854
}

springboot-starter-data-authorization/src/main/java/com/codingapi/springboot/authorization/jdbc/SQLRunningState.java

Lines changed: 0 additions & 14 deletions
This file was deleted.

springboot-starter-data-authorization/src/main/java/com/codingapi/springboot/authorization/jdbc/proxy/CallableStatementProxy.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.codingapi.springboot.authorization.jdbc.proxy;
22

33
import com.codingapi.springboot.authorization.interceptor.SQLInterceptState;
4+
import com.codingapi.springboot.authorization.interceptor.SQLRunningContext;
45
import lombok.AllArgsConstructor;
56

67
import java.io.InputStream;

springboot-starter-data-authorization/src/main/java/com/codingapi/springboot/authorization/jdbc/proxy/ConnectionProxy.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.codingapi.springboot.authorization.jdbc.proxy;
22

33
import com.codingapi.springboot.authorization.interceptor.SQLInterceptState;
4+
import com.codingapi.springboot.authorization.interceptor.SQLRunningContext;
45

56
import java.sql.*;
67
import java.util.Map;

springboot-starter-data-authorization/src/main/java/com/codingapi/springboot/authorization/jdbc/proxy/PreparedStatementProxy.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.codingapi.springboot.authorization.jdbc.proxy;
22

33
import com.codingapi.springboot.authorization.interceptor.SQLInterceptState;
4+
import com.codingapi.springboot.authorization.interceptor.SQLRunningContext;
45
import lombok.AllArgsConstructor;
56

67
import java.io.InputStream;

springboot-starter-data-authorization/src/main/java/com/codingapi/springboot/authorization/jdbc/proxy/StatementProxy.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.codingapi.springboot.authorization.jdbc.proxy;
22

33
import com.codingapi.springboot.authorization.interceptor.SQLInterceptState;
4+
import com.codingapi.springboot.authorization.interceptor.SQLRunningContext;
45
import lombok.AllArgsConstructor;
56

67
import java.sql.*;

springboot-starter-data-authorization/src/test/java/com/codingapi/springboot/authorization/DataAuthorizationContextTest.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
import com.codingapi.springboot.authorization.entity.User;
77
import com.codingapi.springboot.authorization.filter.DefaultDataAuthorizationFilter;
88
import com.codingapi.springboot.authorization.handler.Condition;
9-
import com.codingapi.springboot.authorization.jdbc.proxy.SQLRunningContext;
9+
import com.codingapi.springboot.authorization.interceptor.SQLRunningContext;
1010
import com.codingapi.springboot.authorization.mask.ColumnMaskContext;
1111
import com.codingapi.springboot.authorization.mask.impl.BankCardMask;
1212
import com.codingapi.springboot.authorization.mask.impl.IDCardMask;
@@ -75,7 +75,8 @@ public Condition rowAuthorization(String tableName, String tableAlias) {
7575
long departId = CurrentUser.getInstance().getUser().getDepartId();
7676
String conditionTemplate = "%s.id = " + departId;
7777

78-
List<Depart> departs = SQLRunningContext.getInstance().run(() -> departRepository.findAll());
78+
// 在条件处理的过程中,执行的查询都将不会被拦截
79+
List<Depart> departs = departRepository.findAll();
7980
log.info("departs:{}", departs);
8081

8182
return Condition.formatCondition(conditionTemplate, tableAlias);

springboot-starter-data-fast/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<parent>
66
<artifactId>springboot-parent</artifactId>
77
<groupId>com.codingapi.springboot</groupId>
8-
<version>3.3.33</version>
8+
<version>3.3.34</version>
99
</parent>
1010
<modelVersion>4.0.0</modelVersion>
1111

springboot-starter-flow/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
<parent>
77
<artifactId>springboot-parent</artifactId>
88
<groupId>com.codingapi.springboot</groupId>
9-
<version>3.3.33</version>
9+
<version>3.3.34</version>
1010
</parent>
1111

1212
<name>springboot-starter-flow</name>

springboot-starter-security/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
<parent>
77
<artifactId>springboot-parent</artifactId>
88
<groupId>com.codingapi.springboot</groupId>
9-
<version>3.3.33</version>
9+
<version>3.3.34</version>
1010
</parent>
1111

1212
<artifactId>springboot-starter-security</artifactId>

springboot-starter/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<parent>
66
<groupId>com.codingapi.springboot</groupId>
77
<artifactId>springboot-parent</artifactId>
8-
<version>3.3.33</version>
8+
<version>3.3.34</version>
99
</parent>
1010
<artifactId>springboot-starter</artifactId>
1111

0 commit comments

Comments
 (0)